From 1ea02198e0ae585426b8e8215e08ebe9c83d5dbe Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Sat, 27 Aug 2016 00:28:09 +0300 Subject: [PATCH] Add tests to ensure #KT-10786 Fixed and #KT-8724 Fixed --- libraries/stdlib/test/js/MapJsTest.kt | 60 +++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/libraries/stdlib/test/js/MapJsTest.kt b/libraries/stdlib/test/js/MapJsTest.kt index c7bd5fa6640..b96d2036239 100644 --- a/libraries/stdlib/test/js/MapJsTest.kt +++ b/libraries/stdlib/test/js/MapJsTest.kt @@ -329,6 +329,66 @@ abstract class MapJsTest { assertEquals(VALUES.toNormalizedList(), actualValues.toNormalizedList()) } + @test fun mapMutableIterator() { + val map = createTestMutableMap() + map.keys.removeAll { it == KEYS[0] } + map.entries.removeAll { it.key == KEYS[1] } + map.values.removeAll { it == VALUES[3] } + + assertEquals(1, map.size, "Expected 1 entry to remain in map, but got: $map") + } + + @test fun mapCollectionPropertiesAreViews() { + val map = createTestMutableMap() + assertTrue(map.size >= 3) + val keys = map.keys + val values = map.values + val entries = map.entries + + val (key, value) = map.entries.first() + + map.remove(key) + assertFalse(key in keys, "remove from map") + assertFalse(value in values) + assertFalse(entries.any { it.key == key }) + + map.put(key, value) + assertTrue(key in keys, "put to map") + assertTrue(value in values) + assertTrue(entries.any { it.key == key }) + + keys -= key + assertFalse(key in map, "remove from keys") + assertFalse(value in values) + assertFalse(entries.any { it.key == key }) + + val (key2, value2) = map.entries.first() + values -= value2 + assertFalse(key2 in map, "remove from values") + assertFalse(map.containsValue(value2)) + assertFalse(entries.any { it.value == value2 }) + + val entry = map.entries.first() + entries -= entry + assertFalse(entry.key in map, "remove from entries") + assertFalse(entry.key in keys) + assertFalse(entry.value in values) + + val entry2 = map.entries.first() + entry2.setValue(100) + assertEquals(100, map[entry2.key], "set value via entry") + } + + @test fun mapCollectionPropertiesDoNotSupportAdd() { + val map = createTestMutableMap() + val entry = map.entries.first() + val (key, value) = entry + + assertFailsWith { map.entries += entry } + assertFailsWith { map.keys += key } + assertFailsWith { map.values += value } + } + @test fun specialNamesNotContainsInEmptyMap() { val map = emptyMap()