-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdelegating_iterable_test.dart
113 lines (97 loc) · 3.14 KB
/
delegating_iterable_test.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import 'package:superpower/superpower.dart';
import 'package:test/test.dart';
$Iterable<int> get empty => $Iterable<int>.empty();
$Iterable<E> iterable<E>(List<E> elements) => $Iterable(elements).toIterable();
void main() {
test('test elementAt', () {
var elements = iterable([0, 1, 2, 3, 4]);
expect(elements.elementAt(1), 1);
expect(elements.elementAt(4), 4);
expect(elements.elementAt(-1), 4);
expect(() => elements.elementAt(5), throwsRangeError);
});
test('test iterator', () {
var elements = iterable([0, 1, 2, 3, 4]);
var i = 0;
for (var element in elements) {
expect(elements.elementAt(i++), element);
}
});
test('test length', () {
expect(empty.length, 0);
expect(iterable([0, 1, 2, 3, 4]).length, 5);
});
test('test cast', () {
var elements = iterable<dynamic>(<dynamic>[0, 1, 2, 3, 4]);
expect(empty.cast<String>() is $Iterable<String>, true);
expect(elements.cast<int>() is $Iterable<int>, true);
});
test('test followedBy', () {
var elements = iterable([0, 1, 2, 3, 4]);
expect(empty.followedBy(empty), empty);
expect(empty.followedBy(elements), elements);
expect(elements.followedBy(elements), [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]);
expect(elements.followedBy([1, 2]) is $Iterable, true);
});
test('test map', () {
var elements = iterable([0, 1, 2, 3, 4]);
var result = elements.map((e) => e * e);
expect(result, [0, 1, 4, 9, 16]);
expect(result is $Iterable, true);
});
test('test where', () {
var elements = iterable([0, 1, 2, 3, 4]);
var result = elements.where((e) => e > 2);
expect(result, [3, 4]);
expect(result is $Iterable, true);
});
test('test whereType', () {
var elements = iterable([0, '1', 2, '3', 4]);
var result = elements.whereType<int>();
expect(result, [0, 2, 4]);
expect(result is $Iterable, true);
});
test('test expand', () {
var elements = iterable([0, 1, 2]);
var result = elements.expand((e) => [e, e, e]);
expect(result, [0, 0, 0, 1, 1, 1, 2, 2, 2]);
expect(result is $Iterable, true);
});
test('test toList', () {
var elements = iterable([0, 1, 2, 3, 4]);
{
var result = empty.toList();
expect(result, <int>[]);
expect(result is $List, true);
}
{
var result = elements.toList();
expect(result, [0, 1, 2, 3, 4]);
expect(result is $List, true);
}
});
test('test take', () {
var elements = iterable([0, 1, 2, 3, 4]);
var result = elements.take(3);
expect(result, [0, 1, 2]);
expect(result is $Iterable, true);
});
test('test takeWhile', () {
var elements = iterable([0, 1, 2, 3, 4]);
var result = elements.takeWhile((e) => e < 3);
expect(result, [0, 1, 2]);
expect(result is $Iterable, true);
});
test('test skip', () {
var elements = iterable([0, 1, 2, 3, 4]);
var result = elements.skip(2);
expect(result, [2, 3, 4]);
expect(result is $Iterable, true);
});
test('test skipWhile', () {
var elements = iterable([0, 1, 2, 3, 4]);
var result = elements.skipWhile((e) => e < 3);
expect(result, [3, 4]);
expect(result is $Iterable, true);
});
}