diff options
author | Martin Odersky <odersky@gmail.com> | 2007-01-30 15:17:05 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-01-30 15:17:05 +0000 |
commit | 4a64ac9c7b94b249087cd25712dfb547013f5ed4 (patch) | |
tree | aa884033db150ebde48d2027d29bbc5f3723b9f1 /test/files | |
parent | 2f4c6a2eb8405eaa6d54a8d29f33f4595da7d1c7 (diff) | |
download | scala-4a64ac9c7b94b249087cd25712dfb547013f5ed4.tar.gz scala-4a64ac9c7b94b249087cd25712dfb547013f5ed4.tar.bz2 scala-4a64ac9c7b94b249087cd25712dfb547013f5ed4.zip |
fixed flathashtable.
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/run/colltest.check | 1 | ||||
-rw-r--r-- | test/files/run/colltest.scala | 50 |
2 files changed, 51 insertions, 0 deletions
diff --git a/test/files/run/colltest.check b/test/files/run/colltest.check new file mode 100644 index 0000000000..868cc81ece --- /dev/null +++ b/test/files/run/colltest.check @@ -0,0 +1 @@ +succeeded for 1000000 iterations. diff --git a/test/files/run/colltest.scala b/test/files/run/colltest.scala new file mode 100644 index 0000000000..024f2fb1f4 --- /dev/null +++ b/test/files/run/colltest.scala @@ -0,0 +1,50 @@ +import collection.mutable._ +class TestSet(s0: Set[int], s1: Set[int]) { + val Iterations = 1000000 + val Range = 100000 + val testEachStep = false + val Threshold = 20000 + val r = new java.util.Random(12345) + def test(s: Set[int], n: int): Any = { + val v = n >> 3 + n & 7 match { + case 0 | 1 | 2 => s contains v + case 3 => s += v + case 4 => s -= v + case 5 => if (s.size > Threshold) s -= v else s += v + case 6 => s += v + case 7 => s.size + } + } + def explain(n: int, s: Set[int]): String = n & 7 match { + case 0 | 1 | 2 => "contains" + case 3 => "add" + case 4 => "remove" + case 5 => if (s.size > Threshold) "remove" else "add" + case 6 => "add" + case 7 => "size" + } + def checkSubSet(pre: String, s0: Set[int], s1: Set[int]) { + for (val e <- s0.elements) + if (!(s1 contains e)) { + assert(false, pre+" element: "+e+"\n S0 = "+s0+"\n S1 = "+s1) + } + } + for (val i <- 0 until Iterations) { + val n = r.nextInt(Range) + val res0 = test(s0, n) + val res1 = test(s1, n) + //Console.println("operation = "+explain(n, s0)+", value ="+(n >> 3)+", result0 = "+res0) + if (testEachStep) { + checkSubSet("superfluous", s0, s1) + checkSubSet("missing", s1, s0) + } + if (res0 != res1) + assert(false, "DIFFERENCE , operation = "+explain(n, s0)+", value ="+(n >> 3)+ + ", result0 = "+res0+", result1 = "+res1) + } + Console.println("succeeded for "+Iterations+" iterations.") +} +object Test extends Application { + new TestSet(HashSet.empty, new LinkedHashSet) +} |