Chromium Code Reviews| Index: tests/corelib/map_test.dart |
| diff --git a/tests/corelib/map_test.dart b/tests/corelib/map_test.dart |
| index d405471b2459ba1e58989ca9ab52ac49d5e4f5dd..cca54cfdcfda42360a8e9c483dbd920bb98360b5 100644 |
| --- a/tests/corelib/map_test.dart |
| +++ b/tests/corelib/map_test.dart |
| @@ -14,8 +14,25 @@ void main() { |
| testMapLiteral(); |
| testNullValue(); |
| testTypes(); |
| + |
| + testWeirdKeys(new Map()); |
| + testWeirdKeys(new Map<String, String>()); |
| + testWeirdKeys(new HashMap()); |
| + testWeirdKeys(new HashMap<String, String>()); |
| + testWeirdKeys(new LinkedHashMap()); |
| + testWeirdKeys(new LinkedHashMap<String, String>()); |
| + testWeirdKeys(new SplayTreeMap()); |
| + testWeirdKeys(new SplayTreeMap<String, String>()); |
| + |
| + // BUG(9368): Enable these tests. |
| + if (false) { |
| + Expect.isFalse(new Map<int, num>() is Map<String, num>); |
| + Expect.isFalse(new HashMap<int, num>() is Map<String, num>); |
| + Expect.isFalse(new LinkedHashMap<int, num>() is Map<String, num>); |
| + } |
| } |
| + |
| void test(Map map) { |
| testDeletedElement(map); |
| testMap(map, 1, 2, 3, 4, 5, 6, 7, 8); |
| @@ -134,52 +151,52 @@ void testMap(Map map, key1, key2, key3, key4, key5, key6, key7, key8) { |
| Expect.equals(true, map.containsValue(value1)); |
| // Test Map.forEach. |
| - Map other_map = new Map(); |
| + Map otherMap = new Map(); |
| void testForEachMap(key, value) { |
| - other_map[key] = value; |
| + otherMap[key] = value; |
| } |
| map.forEach(testForEachMap); |
| - Expect.equals(true, other_map.containsKey(key1)); |
| - Expect.equals(true, other_map.containsKey(key2)); |
| - Expect.equals(true, other_map.containsValue(value1)); |
| - Expect.equals(true, other_map.containsValue(value2)); |
| - Expect.equals(2, other_map.length); |
| + Expect.equals(true, otherMap.containsKey(key1)); |
| + Expect.equals(true, otherMap.containsKey(key2)); |
| + Expect.equals(true, otherMap.containsValue(value1)); |
| + Expect.equals(true, otherMap.containsValue(value2)); |
| + Expect.equals(2, otherMap.length); |
| - other_map.clear(); |
| - Expect.equals(0, other_map.length); |
| + otherMap.clear(); |
| + Expect.equals(0, otherMap.length); |
| // Test Collection.keys. |
| void testForEachCollection(value) { |
| - other_map[value] = value; |
| + otherMap[value] = value; |
| } |
| Iterable keys = map.keys; |
| keys.forEach(testForEachCollection); |
| - Expect.equals(true, other_map.containsKey(key1)); |
| - Expect.equals(true, other_map.containsKey(key2)); |
| - Expect.equals(true, other_map.containsValue(key1)); |
| - Expect.equals(true, other_map.containsValue(key2)); |
| - Expect.equals(true, !other_map.containsKey(value1)); |
| - Expect.equals(true, !other_map.containsKey(value2)); |
| - Expect.equals(true, !other_map.containsValue(value1)); |
| - Expect.equals(true, !other_map.containsValue(value2)); |
| - Expect.equals(2, other_map.length); |
| - other_map.clear(); |
| - Expect.equals(0, other_map.length); |
| + Expect.equals(true, otherMap.containsKey(key1)); |
| + Expect.equals(true, otherMap.containsKey(key2)); |
| + Expect.equals(true, otherMap.containsValue(key1)); |
| + Expect.equals(true, otherMap.containsValue(key2)); |
| + Expect.equals(true, !otherMap.containsKey(value1)); |
| + Expect.equals(true, !otherMap.containsKey(value2)); |
| + Expect.equals(true, !otherMap.containsValue(value1)); |
| + Expect.equals(true, !otherMap.containsValue(value2)); |
| + Expect.equals(2, otherMap.length); |
| + otherMap.clear(); |
| + Expect.equals(0, otherMap.length); |
| // Test Collection.values. |
| Iterable values = map.values; |
| values.forEach(testForEachCollection); |
| - Expect.equals(true, !other_map.containsKey(key1)); |
| - Expect.equals(true, !other_map.containsKey(key2)); |
| - Expect.equals(true, !other_map.containsValue(key1)); |
| - Expect.equals(true, !other_map.containsValue(key2)); |
| - Expect.equals(true, other_map.containsKey(value1)); |
| - Expect.equals(true, other_map.containsKey(value2)); |
| - Expect.equals(true, other_map.containsValue(value1)); |
| - Expect.equals(true, other_map.containsValue(value2)); |
| - Expect.equals(2, other_map.length); |
| - other_map.clear(); |
| - Expect.equals(0, other_map.length); |
| + Expect.equals(true, !otherMap.containsKey(key1)); |
| + Expect.equals(true, !otherMap.containsKey(key2)); |
| + Expect.equals(true, !otherMap.containsValue(key1)); |
| + Expect.equals(true, !otherMap.containsValue(key2)); |
| + Expect.equals(true, otherMap.containsKey(value1)); |
| + Expect.equals(true, otherMap.containsKey(value2)); |
| + Expect.equals(true, otherMap.containsValue(value1)); |
| + Expect.equals(true, otherMap.containsValue(value2)); |
| + Expect.equals(2, otherMap.length); |
| + otherMap.clear(); |
| + Expect.equals(0, otherMap.length); |
| // Test Map.putIfAbsent. |
| map.clear(); |
| @@ -245,7 +262,7 @@ void testNullValue() { |
| } |
| void testTypes() { |
| - Map<int> map; |
| + Map<int, dynamic> map; |
| testMap(Map map) { |
| map[42] = "text"; |
| map[43] = "text"; |
| @@ -264,3 +281,32 @@ void testTypes() { |
| testMap(new SplayTreeMap<num, String>(Comparable.compare)); |
| testMap(new SplayTreeMap<num, String>((num a, num b) => a.compareTo(b))); |
| } |
| + |
| +void testWeirdKeys(Map map) { |
| + // Test weird keys. |
| + var weirdKeys = const [ |
| + 'hasOwnProperty', |
| + 'constructor', |
|
erikcorry
2013/03/22 12:59:24
Please add __proto__, __count__, __parent__, NaN a
|
| + 'toLocaleString', |
| + 'propertyIsEnumerable', |
| + '__defineGetter__', |
| + '__defineSetter__', |
| + '__lookupGetter__', |
| + '__lookupSetter__', |
| + 'isPrototypeOf', |
| + 'toString', |
| + 'valueOf' ]; |
| + Expect.isTrue(map.isEmpty); |
| + for (var key in weirdKeys) { |
| + Expect.isFalse(map.containsKey(key)); |
| + Expect.equals(null, map[key]); |
| + var value = 'value:$key'; |
| + map[key] = value; |
| + Expect.isTrue(map.containsKey(key)); |
| + Expect.equals(value, map[key]); |
| + Expect.equals(value, map.remove(key)); |
| + Expect.isFalse(map.containsKey(key)); |
| + Expect.equals(null, map[key]); |
| + } |
| + Expect.isTrue(map.isEmpty); |
| +} |