| Index: packages/collection/test/combined_wrapper/iterable_test.dart
|
| diff --git a/packages/collection/test/combined_wrapper/iterable_test.dart b/packages/collection/test/combined_wrapper/iterable_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..330182125932194b52c5b475113b51a6a14cfc4c
|
| --- /dev/null
|
| +++ b/packages/collection/test/combined_wrapper/iterable_test.dart
|
| @@ -0,0 +1,60 @@
|
| +// 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';
|
| +
|
| +void main() {
|
| + var iterable1 = new Iterable.generate(3);
|
| + var iterable2 = new Iterable.generate(3, (i) => i + 3);
|
| + var iterable3 = new Iterable.generate(3, (i) => i + 6);
|
| +
|
| + test('should combine multiple iterables when iterating', () {
|
| + var combined = new CombinedIterableView([iterable1, iterable2, iterable3]);
|
| + expect(combined, [0, 1, 2, 3, 4, 5, 6, 7, 8]);
|
| + });
|
| +
|
| + test('should combine multiple iterables with some empty ones', () {
|
| + var combined =
|
| + new CombinedIterableView([iterable1, [], iterable2, [], iterable3, []]);
|
| + expect(combined, [0, 1, 2, 3, 4, 5, 6, 7, 8]);
|
| + });
|
| +
|
| + test('should function as an empty iterable when no iterables are passed', () {
|
| + var empty = new CombinedIterableView([]);
|
| + expect(empty, isEmpty);
|
| + });
|
| +
|
| + test('should function as an empty iterable with all empty iterables', () {
|
| + var empty = new CombinedIterableView([[], [], []]);
|
| + expect(empty, isEmpty);
|
| + });
|
| +
|
| + test('should reflect changes from the underlying iterables', () {
|
| + var list1 = [];
|
| + var list2 = [];
|
| + var combined = new CombinedIterableView([list1, list2]);
|
| + expect(combined, isEmpty);
|
| + list1.addAll([1, 2]);
|
| + list2.addAll([3, 4]);
|
| + expect(combined, [1, 2, 3, 4]);
|
| + expect(combined.last, 4);
|
| + expect(combined.first, 1);
|
| + });
|
| +
|
| + test('should reflect changes from the iterable of iterables', () {
|
| + var iterables = <Iterable>[];
|
| + var combined = new CombinedIterableView(iterables);
|
| + expect(combined, isEmpty);
|
| + expect(combined, hasLength(0));
|
| +
|
| + iterables.add(iterable1);
|
| + expect(combined, isNotEmpty);
|
| + expect(combined, hasLength(3));
|
| +
|
| + iterables.clear();
|
| + expect(combined, isEmpty);
|
| + expect(combined, hasLength(0));
|
| + });
|
| +}
|
|
|