| // 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<String, int>.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<String, int> 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<String, int>.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<String, int> 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); | |
| } | |
| } |