mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 16:41:07 +00:00
![Robert Nystrom](/assets/img/avatar_default.png)
Change-Id: I1783f624c7ce7d3b962c301c27ac0f4422d7c28f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/126824 Commit-Queue: Bob Nystrom <rnystrom@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com> Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
98 lines
2.4 KiB
Dart
98 lines
2.4 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<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);
|
|
}
|
|
}
|