Index: packages/quiver/test/collection/delegates/iterable_test.dart |
diff --git a/packages/quiver/test/collection/delegates/iterable_test.dart b/packages/quiver/test/collection/delegates/iterable_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..39e32735a1b5a7e701070c5ca81e1d2645c679a8 |
--- /dev/null |
+++ b/packages/quiver/test/collection/delegates/iterable_test.dart |
@@ -0,0 +1,173 @@ |
+// Copyright 2013 Google Inc. All Rights Reserved. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); |
+// you may not use this file except in compliance with the License. |
+// You may obtain a copy of the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS IS" BASIS, |
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+// See the License for the specific language governing permissions and |
+// limitations under the License. |
+ |
+library quiver.collection.delegates.iterable_test; |
+ |
+import 'package:quiver/collection.dart'; |
+import 'package:test/test.dart'; |
+ |
+class MyIterable extends DelegatingIterable<String> { |
+ final Iterable<String> _delegate; |
+ |
+ MyIterable(this._delegate); |
+ |
+ Iterable<String> get delegate => _delegate; |
+} |
+ |
+void main() { |
+ group('DelegatingIterable', () { |
+ DelegatingIterable<String> delegatingIterable; |
+ |
+ setUp(() { |
+ delegatingIterable = new MyIterable(['a', 'b', 'cc']); |
+ }); |
+ |
+ test('any', () { |
+ expect(delegatingIterable.any((e) => e == 'b'), isTrue); |
+ expect(delegatingIterable.any((e) => e == 'd'), isFalse); |
+ }); |
+ |
+ test('contains', () { |
+ expect(delegatingIterable.contains('b'), isTrue); |
+ expect(delegatingIterable.contains('d'), isFalse); |
+ }); |
+ |
+ test('elementAt', () { |
+ expect(delegatingIterable.elementAt(1), equals('b')); |
+ }); |
+ |
+ test('every', () { |
+ expect(delegatingIterable.every((e) => e is String), isTrue); |
+ expect(delegatingIterable.every((e) => e == 'b'), isFalse); |
+ }); |
+ |
+ test('expand', () { |
+ expect(delegatingIterable.expand((e) => e.codeUnits), |
+ equals([97, 98, 99, 99])); |
+ }); |
+ |
+ test('first', () { |
+ expect(delegatingIterable.first, equals('a')); |
+ }); |
+ |
+ test('firstWhere', () { |
+ expect(delegatingIterable.firstWhere((e) => e == 'b'), equals('b')); |
+ expect(delegatingIterable.firstWhere((e) => e == 'd', orElse: () => 'e'), |
+ equals('e')); |
+ }); |
+ |
+ test('fold', () { |
+ expect(delegatingIterable.fold('z', (p, e) => p + e), equals('zabcc')); |
+ }); |
+ |
+ test('forEach', () { |
+ final s = new StringBuffer(); |
+ delegatingIterable.forEach((e) => s.write(e)); |
+ expect(s.toString(), equals('abcc')); |
+ }); |
+ |
+ test('isEmpty', () { |
+ expect(delegatingIterable.isEmpty, isFalse); |
+ expect(new MyIterable([]).isEmpty, isTrue); |
+ }); |
+ |
+ test('isNotEmpty', () { |
+ expect(delegatingIterable.isNotEmpty, isTrue); |
+ expect(new MyIterable([]).isNotEmpty, isFalse); |
+ }); |
+ |
+ test('forEach', () { |
+ final it = delegatingIterable.iterator; |
+ expect(it.current, isNull); |
+ expect(it.moveNext(), isTrue); |
+ expect(it.current, equals('a')); |
+ expect(it.moveNext(), isTrue); |
+ expect(it.current, equals('b')); |
+ expect(it.moveNext(), isTrue); |
+ expect(it.current, equals('cc')); |
+ expect(it.moveNext(), isFalse); |
+ expect(it.current, isNull); |
+ }); |
+ |
+ test('join', () { |
+ expect(delegatingIterable.join(), equals('abcc')); |
+ expect(delegatingIterable.join(','), equals('a,b,cc')); |
+ }); |
+ |
+ test('last', () { |
+ expect(delegatingIterable.last, equals('cc')); |
+ }); |
+ |
+ test('lastWhere', () { |
+ expect(delegatingIterable.lastWhere((e) => e == 'b'), equals('b')); |
+ expect(delegatingIterable.lastWhere((e) => e == 'd', orElse: () => 'e'), |
+ equals('e')); |
+ }); |
+ |
+ test('length', () { |
+ expect(delegatingIterable.length, equals(3)); |
+ }); |
+ |
+ test('map', () { |
+ expect(delegatingIterable.map((e) => e.toUpperCase()), |
+ equals(['A', 'B', 'CC'])); |
+ }); |
+ |
+ test('reduce', () { |
+ expect(delegatingIterable.reduce((value, element) => value + element), |
+ equals('abcc')); |
+ }); |
+ |
+ test('single', () { |
+ expect(() => delegatingIterable.single, throws); |
+ expect(new MyIterable(['a']).single, equals('a')); |
+ }); |
+ |
+ test('singleWhere', () { |
+ expect(delegatingIterable.singleWhere((e) => e == 'b'), equals('b')); |
+ expect(() => delegatingIterable.singleWhere((e) => e == 'd'), throws); |
+ }); |
+ |
+ test('skip', () { |
+ expect(delegatingIterable.skip(1), equals(['b', 'cc'])); |
+ }); |
+ |
+ test('skipWhile', () { |
+ expect( |
+ delegatingIterable.skipWhile((e) => e == 'a'), equals(['b', 'cc'])); |
+ }); |
+ |
+ test('take', () { |
+ expect(delegatingIterable.take(1), equals(['a'])); |
+ }); |
+ |
+ test('skipWhile', () { |
+ expect(delegatingIterable.takeWhile((e) => e == 'a'), equals(['a'])); |
+ }); |
+ |
+ test('toList', () { |
+ expect(delegatingIterable.toList(), equals(['a', 'b', 'cc'])); |
+ }); |
+ |
+ test('toSet', () { |
+ expect(delegatingIterable.toSet(), |
+ equals(new Set<String>.from(['a', 'b', 'cc']))); |
+ }); |
+ |
+ test('where', () { |
+ expect( |
+ delegatingIterable.where((e) => e.length == 1), equals(['a', 'b'])); |
+ }); |
+ }); |
+} |