Index: test/codegen/corelib/linked_hash_map_test.dart |
diff --git a/test/codegen/corelib/linked_hash_map_test.dart b/test/codegen/corelib/linked_hash_map_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dfefca45be9d888c9a56d2191f15c43948b26aba |
--- /dev/null |
+++ b/test/codegen/corelib/linked_hash_map_test.dart |
@@ -0,0 +1,116 @@ |
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+// Dart test for linked hash-maps. |
+library linkedHashMap.test; |
+import "package:expect/expect.dart"; |
+import 'dart:collection' show LinkedHashMap; |
+ |
+class LinkedHashMapTest { |
+ static void testMain() { |
+ Map map = new LinkedHashMap(); |
+ map["a"] = 1; |
+ map["b"] = 2; |
+ map["c"] = 3; |
+ map["d"] = 4; |
+ map["e"] = 5; |
+ |
+ List<String> keys = new List<String>(5); |
+ List<int> values = new List<int>(5); |
+ |
+ int index; |
+ |
+ clear() { |
+ index = 0; |
+ for (int i = 0; i < keys.length; i++) { |
+ keys[i] = null; |
+ values[i] = null; |
+ } |
+ } |
+ |
+ verifyKeys(List<String> correctKeys) { |
+ for (int i = 0; i < correctKeys.length; i++) { |
+ Expect.equals(correctKeys[i], keys[i]); |
+ } |
+ } |
+ |
+ verifyValues(List<int> correctValues) { |
+ for (int i = 0; i < correctValues.length; i++) { |
+ Expect.equals(correctValues[i], values[i]); |
+ } |
+ } |
+ |
+ testForEachMap(Object key, Object value) { |
+ Expect.equals(map[key], value); |
+ keys[index] = key; |
+ values[index] = value; |
+ index++; |
+ } |
+ |
+ testForEachValue(Object v) { |
+ values[index++] = v; |
+ } |
+ |
+ testForEachKey(Object v) { |
+ keys[index++] = v; |
+ } |
+ |
+ final keysInOrder = const ["a", "b", "c", "d", "e"]; |
+ final valuesInOrder = const [1, 2, 3, 4, 5]; |
+ |
+ clear(); |
+ map.forEach(testForEachMap); |
+ verifyKeys(keysInOrder); |
+ verifyValues(valuesInOrder); |
+ |
+ clear(); |
+ map.keys.forEach(testForEachKey); |
+ verifyKeys(keysInOrder); |
+ |
+ clear(); |
+ map.values.forEach(testForEachValue); |
+ verifyValues(valuesInOrder); |
+ |
+ // Remove and then insert. |
+ map.remove("b"); |
+ map["b"] = 6; |
+ final keysAfterBMove = const ["a", "c", "d", "e", "b"]; |
+ final valuesAfterBMove = const [1, 3, 4, 5, 6]; |
+ |
+ |
+ clear(); |
+ map.forEach(testForEachMap); |
+ verifyKeys(keysAfterBMove); |
+ verifyValues(valuesAfterBMove); |
+ |
+ clear(); |
+ map.keys.forEach(testForEachKey); |
+ verifyKeys(keysAfterBMove); |
+ |
+ clear(); |
+ map.values.forEach(testForEachValue); |
+ verifyValues(valuesAfterBMove); |
+ |
+ // Update. |
+ map["a"] = 0; |
+ final valuesAfterAUpdate = const [0, 3, 4, 5, 6]; |
+ |
+ clear(); |
+ map.forEach(testForEachMap); |
+ verifyKeys(keysAfterBMove); |
+ verifyValues(valuesAfterAUpdate); |
+ |
+ clear(); |
+ map.keys.forEach(testForEachKey); |
+ verifyKeys(keysAfterBMove); |
+ |
+ clear(); |
+ map.values.forEach(testForEachValue); |
+ verifyValues(valuesAfterAUpdate); |
+ } |
+} |
+ |
+main() { |
+ LinkedHashMapTest.testMain(); |
+} |