summaryrefslogtreecommitdiff
path: root/test/junit/scala/collection
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-06-01 10:10:33 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2016-06-01 10:10:33 +0200
commit460fa9d2af7ac12d5c6b0b935a02db30dc5d7cd8 (patch)
tree691928c7536f0835e0cc954103a272bb987add76 /test/junit/scala/collection
parent8e48655fb60c956d50282f12c702c1d0533ed24b (diff)
parent41965695b71bc00ea60003c39c72a0e10bfd621f (diff)
downloadscala-460fa9d2af7ac12d5c6b0b935a02db30dc5d7cd8.tar.gz
scala-460fa9d2af7ac12d5c6b0b935a02db30dc5d7cd8.tar.bz2
scala-460fa9d2af7ac12d5c6b0b935a02db30dc5d7cd8.zip
Merge commit '4196569' into merge-2.11-to-2.12-june-1
Diffstat (limited to 'test/junit/scala/collection')
-rw-r--r--test/junit/scala/collection/immutable/HashMapTest.scala48
1 files changed, 48 insertions, 0 deletions
diff --git a/test/junit/scala/collection/immutable/HashMapTest.scala b/test/junit/scala/collection/immutable/HashMapTest.scala
new file mode 100644
index 0000000000..a970786455
--- /dev/null
+++ b/test/junit/scala/collection/immutable/HashMapTest.scala
@@ -0,0 +1,48 @@
+package scala.collection.immutable
+
+import org.junit.Assert.assertEquals
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@RunWith(classOf[JUnit4])
+class HashMapTest {
+
+ private val computeHashF = {
+ HashMap.empty.computeHash _
+ }
+
+ @Test
+ def canMergeIdenticalHashMap1sWithNullKvs() {
+ def m = new HashMap.HashMap1(1, computeHashF(1), 1, null)
+ val merged = m.merged(m)(null)
+ assertEquals(m, merged)
+ }
+
+ @Test
+ def canMergeIdenticalHashMap1sWithNullKvsCustomMerge() {
+ def m = new HashMap.HashMap1(1, computeHashF(1), 1, null)
+ val merged = m.merged(m) {
+ case ((k1, v1), (k2, v2)) =>
+ (k1, v1 + v2)
+ }
+ assertEquals(new HashMap.HashMap1(1, computeHashF(1), 2, null), merged)
+ }
+
+ @Test
+ def canMergeHashMap1sWithNullKvsHashCollision() {
+ val key1 = 1000L * 1000 * 1000 * 10
+ val key2 = key1.##.toLong
+ assert(key1.## == key2.##)
+
+ val m1 = new HashMap.HashMap1(key1, computeHashF(key1.##), 1, null)
+ val m2 = new HashMap.HashMap1(key2, computeHashF(key2.##), 1, null)
+ val expected = HashMap(key1 -> 1, key2 -> 1)
+ val merged = m1.merged(m2)(null)
+ assertEquals(expected, merged)
+ val mergedWithMergeFunction = m1.merged(m2) { (kv1, kv2) =>
+ throw new RuntimeException("Should not be reached.")
+ }
+ assertEquals(expected, mergedWithMergeFunction)
+ }
+} \ No newline at end of file