From 3980664049c9d6248d516a35ca41b37ae9c24934 Mon Sep 17 00:00:00 2001 From: Ilya Ryzhenkov Date: Tue, 15 Jul 2014 21:48:14 +0400 Subject: [PATCH] Tests for map functions. --- .../stdlib/test/collections/CollectionTest.kt | 9 ++- libraries/stdlib/test/collections/MapTest.kt | 57 +++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/libraries/stdlib/test/collections/CollectionTest.kt b/libraries/stdlib/test/collections/CollectionTest.kt index 72ea5224722..611ff36962f 100644 --- a/libraries/stdlib/test/collections/CollectionTest.kt +++ b/libraries/stdlib/test/collections/CollectionTest.kt @@ -165,10 +165,17 @@ class CollectionTest { } test fun groupBy() { - val words = arrayListOf("a", "ab", "abc", "def", "abcd") + val words = arrayListOf("a", "abc", "ab", "def", "abcd") val byLength = words.groupBy { it.length } assertEquals(4, byLength.size()) + // verify that order of keys is preserved + val listOfPairs = byLength.toList() + assertEquals(1, listOfPairs[0].first) + assertEquals(3, listOfPairs[1].first) + assertEquals(2, listOfPairs[2].first) + assertEquals(4, listOfPairs[3].first) + val l3 = byLength.getOrElse(3, { ArrayList() }) assertEquals(2, l3.size) } diff --git a/libraries/stdlib/test/collections/MapTest.kt b/libraries/stdlib/test/collections/MapTest.kt index 9f8f422a30b..12b7f99656d 100644 --- a/libraries/stdlib/test/collections/MapTest.kt +++ b/libraries/stdlib/test/collections/MapTest.kt @@ -131,6 +131,21 @@ class MapTest { assertEquals(2, map.get("b")) } + test fun createWithSelector() { + val map = listOf("a", "bb", "ccc").toMap { it.length } + assertEquals(3, map.size) + assertEquals("a", map.get(1)) + assertEquals("bb", map.get(2)) + assertEquals("ccc", map.get(3)) + } + + test fun createWithSelectorAndOverwrite() { + val map = listOf("aa", "bb", "ccc").toMap { it.length } + assertEquals(2, map.size) + assertEquals("bb", map.get(2)) + assertEquals("ccc", map.get(3)) + } + test fun createUsingTo() { val map = mapOf("a" to 1, "b" to 2) assertEquals(2, map.size) @@ -146,5 +161,47 @@ class MapTest { assertEquals(arrayListOf("c", "b", "a"), map.keySet().toList()) } + test fun filter() { + val map = mapOf(Pair("b", 3), Pair("c", 2), Pair("a", 2)) + val filteredByKey = map.filter { it.key == "b" } + assertEquals(1, filteredByKey.size) + assertEquals(3, filteredByKey["b"]) + val filteredByKey2 = map.filterKeys { it == "b" } + assertEquals(1, filteredByKey2.size) + assertEquals(3, filteredByKey2["b"]) + + val filteredByValue = map.filter { it.value == 2 } + assertEquals(2, filteredByValue.size) + assertEquals(null, filteredByValue["b"]) + assertEquals(2, filteredByValue["c"]) + assertEquals(2, filteredByValue["a"]) + + val filteredByValue2 = map.filterValues { it == 2 } + assertEquals(2, filteredByValue2.size) + assertEquals(null, filteredByValue2["b"]) + assertEquals(2, filteredByValue2["c"]) + assertEquals(2, filteredByValue2["a"]) + } + + test fun filterNot() { + val map = mapOf(Pair("b", 3), Pair("c", 2), Pair("a", 2)) + val filteredByKey = map.filterNot { it.key == "b" } + assertEquals(2, filteredByKey.size) + assertEquals(null, filteredByKey["b"]) + assertEquals(2, filteredByKey["c"]) + assertEquals(2, filteredByKey["a"]) + + val filteredByValue = map.filterNot { it.value == 2 } + assertEquals(1, filteredByValue.size) + assertEquals(3, filteredByValue["b"]) + } + + test fun plusAssign() { + val extended = hashMapOf(Pair("b", 3)) + extended += ("c" to 2) + assertEquals(2, extended.size) + assertEquals(2, extended["c"]) + assertEquals(3, extended["b"]) + } }