summaryrefslogtreecommitdiff
path: root/test/files/run/ctries/lnode.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-02-06 11:37:35 -0800
committerPaul Phillips <paulp@improving.org>2012-02-06 11:49:38 -0800
commit7539c4ee51c25a684399cd5400bf0285e6508fe2 (patch)
tree94a9eb9b9519417d1924711f56638a4be02f4a2b /test/files/run/ctries/lnode.scala
parentf0dcb3c87fe9c3214af6abe4e8d2032a8d51295c (diff)
parent93c2d93f4e7aaffaac92bdf14714a6c3871718c9 (diff)
downloadscala-7539c4ee51c25a684399cd5400bf0285e6508fe2.tar.gz
scala-7539c4ee51c25a684399cd5400bf0285e6508fe2.tar.bz2
scala-7539c4ee51c25a684399cd5400bf0285e6508fe2.zip
Merge branch 'master' into topic/inline
Conflicts: src/compiler/scala/tools/nsc/Global.scala test/files/run/programmatic-main.check
Diffstat (limited to 'test/files/run/ctries/lnode.scala')
-rw-r--r--test/files/run/ctries/lnode.scala61
1 files changed, 61 insertions, 0 deletions
diff --git a/test/files/run/ctries/lnode.scala b/test/files/run/ctries/lnode.scala
new file mode 100644
index 0000000000..88cbeed1f6
--- /dev/null
+++ b/test/files/run/ctries/lnode.scala
@@ -0,0 +1,61 @@
+
+
+
+import collection.mutable.Ctrie
+
+
+object LNodeSpec extends Spec {
+
+ val initsz = 1500
+ val secondsz = 1750
+
+ def test() {
+ "accept elements with the same hash codes" in {
+ val ct = new Ctrie[DumbHash, Int]
+ for (i <- 0 until initsz) ct.update(new DumbHash(i), i)
+ }
+
+ "lookup elements with the same hash codes" in {
+ val ct = new Ctrie[DumbHash, Int]
+ for (i <- 0 until initsz) ct.update(new DumbHash(i), i)
+ for (i <- 0 until initsz) assert(ct.get(new DumbHash(i)) == Some(i))
+ for (i <- initsz until secondsz) assert(ct.get(new DumbHash(i)) == None)
+ }
+
+ "remove elements with the same hash codes" in {
+ val ct = new Ctrie[DumbHash, Int]
+ for (i <- 0 until initsz) ct.update(new DumbHash(i), i)
+ for (i <- 0 until initsz) {
+ val remelem = ct.remove(new DumbHash(i))
+ assert(remelem == Some(i), "removing " + i + " yields " + remelem)
+ }
+ for (i <- 0 until initsz) assert(ct.get(new DumbHash(i)) == None)
+ }
+
+ "put elements with the same hash codes if absent" in {
+ val ct = new Ctrie[DumbHash, Int]
+ for (i <- 0 until initsz) ct.put(new DumbHash(i), i)
+ for (i <- 0 until initsz) assert(ct.lookup(new DumbHash(i)) == i)
+ for (i <- 0 until initsz) assert(ct.putIfAbsent(new DumbHash(i), i) == Some(i))
+ for (i <- initsz until secondsz) assert(ct.putIfAbsent(new DumbHash(i), i) == None)
+ for (i <- initsz until secondsz) assert(ct.lookup(new DumbHash(i)) == i)
+ }
+
+ "replace elements with the same hash codes" in {
+ val ct = new Ctrie[DumbHash, Int]
+ for (i <- 0 until initsz) assert(ct.put(new DumbHash(i), i) == None)
+ for (i <- 0 until initsz) assert(ct.lookup(new DumbHash(i)) == i)
+ for (i <- 0 until initsz) assert(ct.replace(new DumbHash(i), -i) == Some(i))
+ for (i <- 0 until initsz) assert(ct.lookup(new DumbHash(i)) == -i)
+ for (i <- 0 until initsz) assert(ct.replace(new DumbHash(i), -i, i) == true)
+ }
+
+ "remove elements with the same hash codes if mapped to a specific value" in {
+ val ct = new Ctrie[DumbHash, Int]
+ for (i <- 0 until initsz) assert(ct.put(new DumbHash(i), i) == None)
+ for (i <- 0 until initsz) assert(ct.remove(new DumbHash(i), i) == true)
+ }
+
+ }
+
+}