diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2016-06-01 10:10:33 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2016-06-01 10:10:33 +0200 |
commit | 460fa9d2af7ac12d5c6b0b935a02db30dc5d7cd8 (patch) | |
tree | 691928c7536f0835e0cc954103a272bb987add76 /test/junit | |
parent | 8e48655fb60c956d50282f12c702c1d0533ed24b (diff) | |
parent | 41965695b71bc00ea60003c39c72a0e10bfd621f (diff) | |
download | scala-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')
-rw-r--r-- | test/junit/scala/collection/immutable/HashMapTest.scala | 48 |
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 |