// 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. library map.from.test; import "package:expect/expect.dart"; import 'dart:collection'; main() { testWithConstMap(); testWithNonConstMap(); testWithHashMap(); testWithLinkedMap(); } testWithConstMap() { var map = const {'b': 42, 'a': 43}; var otherMap = new Map.from(map); Expect.isTrue(otherMap is Map); Expect.isTrue(otherMap is LinkedHashMap); Expect.equals(2, otherMap.length); Expect.equals(2, otherMap.keys.length); Expect.equals(2, otherMap.values.length); var count = (map) { int cnt = 0; map.forEach((a, b) { cnt += b; }); return cnt; }; Expect.equals(42 + 43, count(map)); Expect.equals(count(map), count(otherMap)); } testWithNonConstMap() { var map = {'b': 42, 'a': 43}; var otherMap = new Map.from(map); Expect.isTrue(otherMap is Map); Expect.isTrue(otherMap is LinkedHashMap); Expect.equals(2, otherMap.length); Expect.equals(2, otherMap.keys.length); Expect.equals(2, otherMap.values.length); int count(map) { int count = 0; map.forEach((a, b) { count += b; }); return count; } ; Expect.equals(42 + 43, count(map)); Expect.equals(count(map), count(otherMap)); // Test that adding to the original map does not change otherMap. map['c'] = 44; Expect.equals(3, map.length); Expect.equals(2, otherMap.length); Expect.equals(2, otherMap.keys.length); Expect.equals(2, otherMap.values.length); // Test that adding to otherMap does not change the original map. otherMap['c'] = 44; Expect.equals(3, map.length); Expect.equals(3, otherMap.length); Expect.equals(3, otherMap.keys.length); Expect.equals(3, otherMap.values.length); } testWithHashMap() { var map = const {'b': 1, 'a': 2, 'c': 3}; var otherMap = new HashMap.from(map); Expect.isTrue(otherMap is Map); Expect.isTrue(otherMap is HashMap); var i = 1; for (var val in map.values) { Expect.equals(i++, val); } } testWithLinkedMap() { var map = const {'b': 1, 'a': 2, 'c': 3}; var otherMap = new LinkedHashMap.from(map); Expect.isTrue(otherMap is Map); Expect.isTrue(otherMap is LinkedHashMap); var i = 1; for (var val in map.values) { Expect.equals(i++, val); } }