Files
kotlin-fork/libraries/stdlib/test/collections/MapJVMTest.kt
T
Ilya Gorbunov 64379947fd Do not allow using getOrPut on concurrent maps.
#KT-5800 In Progress
2015-07-01 22:33:58 +03:00

53 lines
1.7 KiB
Kotlin

package test.collections
import java.util.concurrent.ConcurrentHashMap
import kotlin.test.*
import org.junit.Test as test
class MapJVMTest {
test fun createSortedMap() {
val map = sortedMapOf(Pair("c", 3), Pair("b", 2), Pair("a", 1))
assertEquals(1, map["a"])
assertEquals(2, map["b"])
assertEquals(3, map["c"])
assertEquals(listOf("a", "b", "c"), map.keySet().toList())
}
test fun toSortedMap() {
val map = mapOf(Pair("c", 3), Pair("b", 2), Pair("a", 1))
val sorted = map.toSortedMap()
assertEquals(1, sorted["a"])
assertEquals(2, sorted["b"])
assertEquals(3, sorted["c"])
assertEquals(listOf("a", "b", "c"), sorted.keySet().toList())
}
test fun toSortedMapWithComparator() {
val map = mapOf(Pair("c", 3), Pair("bc", 2), Pair("bd", 4), Pair("abc", 1))
val sorted = map.toSortedMap(compareBy<String> { it.length() } thenBy { it })
assertEquals(listOf("c", "bc", "bd", "abc"), sorted.keySet().toList())
assertEquals(1, sorted["abc"])
assertEquals(2, sorted["bc"])
assertEquals(3, sorted["c"])
}
test fun toProperties() {
val map = mapOf("a" to "A", "b" to "B")
val prop = map.toProperties()
assertEquals(2, prop.size())
assertEquals("A", prop.getProperty("a", "fail"))
assertEquals("B", prop.getProperty("b", "fail"))
}
test fun getOrPutFailsOnConcurrentMap() {
val map = ConcurrentHashMap<String, Int>()
fails {
map.getOrPut("x") { 1 }
}
expect(1) {
(map as MutableMap<String, Int>).getOrPut("x") { 1 }
}
}
}