OLD | NEW |
| (Empty) |
1 // Copyright 2013 Google Inc. All Rights Reserved. | |
2 // | |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | |
4 // you may not use this file except in compliance with the License. | |
5 // You may obtain a copy of the License at | |
6 // | |
7 // http://www.apache.org/licenses/LICENSE-2.0 | |
8 // | |
9 // Unless required by applicable law or agreed to in writing, software | |
10 // distributed under the License is distributed on an "AS IS" BASIS, | |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
12 // See the License for the specific language governing permissions and | |
13 // limitations under the License. | |
14 | |
15 library quiver.iterables.enumerate_test; | |
16 | |
17 import 'package:test/test.dart'; | |
18 import 'package:quiver_iterables/iterables.dart'; | |
19 | |
20 main() { | |
21 group('enumerate', () { | |
22 test("should add indices to its argument", () { | |
23 var e = enumerate(['a', 'b', 'c']); | |
24 expect(e.map((v) => v.index), [0, 1, 2]); | |
25 expect(e.map((v) => v.value), ['a', 'b', 'c']); | |
26 }); | |
27 | |
28 test("should return an empty iterable given an empty iterable", () { | |
29 expect(enumerate([]), []); | |
30 }); | |
31 | |
32 test("should add indices to its argument", () { | |
33 var e = enumerate(['a', 'b', 'c']); | |
34 expect(e.map((v) => v.index), [0, 1, 2]); | |
35 expect(e.map((v) => v.index), [0, 1, 2], | |
36 reason: 'should enumerate to the same values a second time'); | |
37 }); | |
38 | |
39 test("first", () { | |
40 var e = enumerate(['a', 'b', 'c']); | |
41 expect(e.first.value, 'a'); | |
42 expect(e.first.index, 0); | |
43 expect(e.first.value, 'a'); | |
44 }); | |
45 | |
46 test("last", () { | |
47 var e = enumerate(['a', 'b', 'c']); | |
48 expect(e.last.value, 'c'); | |
49 expect(e.last.index, 2); | |
50 expect(e.last.value, 'c'); | |
51 }); | |
52 | |
53 test("single", () { | |
54 var e = enumerate(['a']); | |
55 expect(e.single.value, 'a'); | |
56 expect(e.single.index, 0); | |
57 expect(e.single.value, 'a'); | |
58 | |
59 expect(() => enumerate([1, 2]).single, throws); | |
60 }); | |
61 | |
62 test("length", () { | |
63 expect(enumerate([7, 8, 9]).length, 3); | |
64 }); | |
65 | |
66 test("elementAt", () { | |
67 var list = ['a', 'b', 'c']; | |
68 var e = enumerate(list); | |
69 for (int i = 2; i >= 0; i--) { | |
70 expect(e.elementAt(i).value, list[i]); | |
71 expect(e.elementAt(i).index, i); | |
72 } | |
73 }); | |
74 | |
75 test("equals and hashcode", () { | |
76 var list = ['a', 'b', 'c']; | |
77 var e1 = enumerate(list); | |
78 var e2 = enumerate(list); | |
79 for (int i = 0; i < 2; i++) { | |
80 expect(e1.elementAt(i), e2.elementAt(i)); | |
81 expect(e1.elementAt(i).hashCode, e1.elementAt(i).hashCode); | |
82 expect(identical(e1.elementAt(i), e2.elementAt(i)), isFalse); | |
83 } | |
84 }); | |
85 }); | |
86 } | |
OLD | NEW |