Prepare to treat keys mapped to null same way as missing keys in Map extensions: getOrElse, getOrPut, getOrImplicitDefault.
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user