mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 15:17:07 +00:00
0fa1bbdf15
Updated tests assuming a specific ordering of an unlinked hash map to not be daft. R=floitsch@google.com, jmesserly@google.com Review URL: https://codereview.chromium.org//22859069 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26693 260f80e4-7a28-3924-810f-c04153c831b5
94 lines
2.5 KiB
Dart
94 lines
2.5 KiB
Dart
// 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 HashMap);
|
|
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 HashMap);
|
|
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);
|
|
Expect.isTrue(otherMap is !LinkedHashMap);
|
|
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 HashMap);
|
|
Expect.isTrue(otherMap is LinkedHashMap);
|
|
var i = 1;
|
|
for (var val in map.values) {
|
|
Expect.equals(i++, val);
|
|
}
|
|
}
|