Prepare to treat keys mapped to null same way as missing keys in Map extensions: getOrElse, getOrPut, getOrImplicitDefault.

This commit is contained in:
Ilya Gorbunov
2015-12-17 07:52:41 +03:00
parent 8b5a194dd6
commit 188119aa83
6 changed files with 60 additions and 9 deletions
@@ -1,6 +1,7 @@
package test.collections
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ConcurrentMap
import kotlin.test.assertEquals
import kotlin.test.assertFails
import kotlin.test.expect
@@ -51,14 +52,13 @@ class MapJVMTest {
assertEquals(listOf(1, 3, 5), map.keys.toList())
assertEquals(listOf('b', 'd', 'f'), map.values.toList())
}
@test fun getOrPutFailsOnConcurrentMap() {
val map = ConcurrentHashMap<String, Int>()
// now this is an error
// map.getOrPut("x") { 1 }
// not an error anymore
expect(1) {
map.concurrentGetOrPut("x") { 1 }
map.getOrPut("x") { 1 }
}
expect(1) {
(map as MutableMap<String, Int>).getOrPut("x") { 1 }
@@ -10,6 +10,8 @@ class MapTest {
val data = mapOf<String, Int>()
val a = data.getOrElse("foo") { 2 }
assertEquals(2, a)
val a1 = data.getOrElse("foo") { data.get("bar") } ?: 1
assertEquals(1, a1)
val b = data.getOrElse("foo") { 3 }
assertEquals(3, b)
@@ -54,6 +56,9 @@ class MapTest {
val empty = hashMapOf<String, Int?>()
val c = empty.getOrPut("") { null }
assertEquals(null, c)
val d = empty.getOrPut("") { 1 }
assertEquals(null, d) // soon will change to 1
}
@test fun sizeAndEmpty() {