Index: packages/collection/test/combined_wrapper/map_test.dart |
diff --git a/packages/collection/test/combined_wrapper/map_test.dart b/packages/collection/test/combined_wrapper/map_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..832fe364fe741ecf5dd527fc1243a00a0346a8ca |
--- /dev/null |
+++ b/packages/collection/test/combined_wrapper/map_test.dart |
@@ -0,0 +1,55 @@ |
+// Copyright (c) 2017, 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. |
+ |
+import 'package:collection/collection.dart'; |
+import 'package:test/test.dart'; |
+ |
+import '../unmodifiable_collection_test.dart' as common; |
+ |
+void main() { |
+ var map1 = const {1: 1, 2: 2, 3: 3}; |
+ var map2 = const {4: 4, 5: 5, 6: 6}; |
+ var map3 = const {7: 7, 8: 8, 9: 9}; |
+ var concat = {}..addAll(map1)..addAll(map2)..addAll(map3); |
+ |
+ // In every way possible this should test the same as an UnmodifiableMapView. |
+ common.testReadMap( |
+ concat, new CombinedMapView([map1, map2, map3]), 'CombinedMapView'); |
+ |
+ common.testReadMap( |
+ concat, |
+ new CombinedMapView([map1, {}, map2, {}, map3, {}]), |
+ 'CombinedMapView (some empty)'); |
+ |
+ test('should function as an empty map when no maps are passed', () { |
+ var empty = new CombinedMapView([]); |
+ expect(empty, isEmpty); |
+ expect(empty.length, 0); |
+ }); |
+ |
+ test('should function as an empty map when only empty maps are passed', () { |
+ var empty = new CombinedMapView([{}, {}, {}]); |
+ expect(empty, isEmpty); |
+ expect(empty.length, 0); |
+ }); |
+ |
+ test('should reflect underlying changes back to the combined map', () { |
+ var backing1 = <int, int>{}; |
+ var backing2 = <int, int>{}; |
+ var combined = new CombinedMapView([backing1, backing2]); |
+ expect(combined, isEmpty); |
+ backing1.addAll(map1); |
+ expect(combined, map1); |
+ backing2.addAll(map2); |
+ expect(combined, new Map.from(backing1)..addAll(backing2)); |
+ }); |
+ |
+ test('should reflect underlying changes with a single map', () { |
+ var backing1 = <int, int>{}; |
+ var combined = new CombinedMapView([backing1]); |
+ expect(combined, isEmpty); |
+ backing1.addAll(map1); |
+ expect(combined, map1); |
+ }); |
+} |