package HashMapTests import HashMap @Test function testHas() let map = new HashMap map.has(5).assertEquals(false) map.put(5, 1) map.has(5).assertEquals(true) @Test function testPutGet() let map = new HashMap map.put(3, 1) map.get(3).assertEquals(1) map.get(5).assertEquals(0) map.remove(3) map.get(3).assertEquals(0) @Test function testRemove() let map = new HashMap ..put(3, 5) map.has(3).assertEquals(true) map.has(5).assertEquals(false) map.remove(3) map.has(3).assertEquals(false) @Test function testBooleanHashmap() let hm = new HashMap hm.put(1, true) hm.get(1).assertEquals(true) @Test function testSize() let hm = new HashMap hm.put(1, true) hm.size().assertEquals(1) hm.get(1).assertEquals(true) hm.size().assertEquals(1) hm.put(1, false) hm.size().assertEquals(1) hm.put(2, true) hm.size().assertEquals(2) hm.put(3, true) hm.put(4, true) hm.size().assertEquals(4) hm.remove(4) hm.size().assertEquals(3) hm.remove(3) hm.remove(2) hm.size().assertEquals(1) hm.getAndRemove(2) hm.size().assertEquals(1) hm.getAndRemove(1) hm.size().assertEquals(0) /* IterableMap */ @Test function testIterableMap() let map = new IterableMap map.put(3, "string1 ") map.put(9, "removed") map.put(2, "string2 ") map.put(8, "removed") map.put(1, "string3") map.remove(2) map.removeValue("removed", true) let otherMap = new IterableMap(map) string test = "" for key in otherMap test += otherMap.get(key) test.assertEquals("string1 string3") otherMap.hasKey(2).assertFalse() otherMap.hasKey(3).assertTrue() @Test function testIMIterator() let map = new IterableMap ..put(5, 1) ..put(8, 3) ..put(9, 5) var i = 0 let vals = [1, 3, 5] for key in map map.get(key).assertEquals(vals[i]) i++ @Test function testIMGetPut() let map = new IterableMap ..put(5, 1) ..put(8, 3) ..put(9, 5) map.get(8).assertEquals(3) map.get(2).assertEquals(0) map.get(5).assertEquals(1) map.put(5, 2) map.get(5).assertEquals(2) @Test function testIMHasKeyRemove() let map = new IterableMap ..put(5, 1) ..put(8, 3) ..put(9, 5) map.hasKey(5).assertEquals(true) map.hasKey(6).assertEquals(false) map.remove(5) map.hasKey(5).assertEquals(false) @Test function testIMRemoveValue() let map = new IterableMap ..put(5, 1) ..put(8, 3) ..put(6, 1) ..put(9, 2) ..put(3, 1) ..put(4, 5) map.removeValue(1, false) map.get(6).assertEquals(1) map.removeValue(1, true) map.hasKey(3).assertEquals(false) @Test function testIMAddAll() let map = new IterableMap ..put(5, 1) ..put(8, 3) ..put(9, 5) let map2 = new IterableMap ..put(4, 1) ..put(8, 5) ..put(3, 5) let keys = [5, 8, 9, 4, 3] let vals = [1, 5, 5, 1, 5] map.addAll(map2) for i = 0 to 4 map.get(keys[i]).assertEquals(vals[i]) @Test function testIMCopy() let map = new IterableMap ..put(5, 1) ..put(8, 3) ..put(9, 5) let map2 = map.copy() for key in map map2.get(key).assertEquals(map.get(key)) @Test function testIMCopyConstructor() let map = new IterableMap ..put(5, 1) ..put(8, 3) ..put(9, 5) let map2 = new IterableMap(map) for key in map map2.get(key).assertEquals(map.get(key)) @Test function testIMFlush() let map = new IterableMap ..put(5, 1) ..put(8, 3) ..put(9, 5) map.flush() map.hasKey(5).assertEquals(false) map.get(5).assertEquals(0) destroy map @Test function testIMForEach() let map = new IterableMap ..put(5, 1) ..put(8, 3) ..put(9, 5) var count = 0 map.forEach() (integer key, integer value) -> count++ if count == 1 key.assertEquals(5) value.assertEquals(1) else if count == 2 key.assertEquals(8) value.assertEquals(3) else if count == 3 key.assertEquals(9) value.assertEquals(5) destroy map