2
2
// for details. All rights reserved. Use of this source code is governed by a
3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
- import "package:expect/expect.dart" ;
6
5
import "dart:collection" ;
7
6
8
- test (List <int > list, int index, Iterable <int > iterable) {
7
+ import "package:expect/expect.dart" ;
8
+
9
+ void test (List <int > list, int index, Iterable <int > iterable) {
9
10
List copy = list.toList ();
10
11
list.setAll (index, iterable);
11
12
Expect .equals (copy.length, list.length);
@@ -22,7 +23,7 @@ test(List<int> list, int index, Iterable<int> iterable) {
22
23
}
23
24
24
25
class MyList <T > extends ListBase <T > {
25
- List list;
26
+ final List < T > list;
26
27
MyList (this .list);
27
28
get length => list.length;
28
29
set length (value) {
@@ -37,61 +38,55 @@ class MyList<T> extends ListBase<T> {
37
38
toString () => list.toString ();
38
39
}
39
40
40
- main () {
41
- test ([1 , 2 , 3 ], 0 , [4 , 5 ]);
42
- test ([1 , 2 , 3 ], 1 , [4 , 5 ]);
43
- test ([1 , 2 , 3 ], 2 , [4 ]);
44
- test ([1 , 2 , 3 ], 3 , []);
45
- test ([1 , 2 , 3 ], 0 , [4 , 5 ].map ((x) => x));
46
- test ([1 , 2 , 3 ], 1 , [4 , 5 ].map ((x) => x));
47
- test ([1 , 2 , 3 ], 2 , [4 ].map ((x) => x));
48
- test ([1 , 2 , 3 ], 3 , [].map ((x) => x));
49
- test ([1 , 2 , 3 ], 0 , const [4 , 5 ]);
50
- test ([1 , 2 , 3 ], 1 , const [4 , 5 ]);
51
- test ([1 , 2 , 3 ], 2 , const [4 ]);
52
- test ([1 , 2 , 3 ], 3 , const []);
53
- test ([1 , 2 , 3 ], 0 , new Iterable .generate (2 , (x) => x + 4 ));
54
- test ([1 , 2 , 3 ], 1 , new Iterable .generate (2 , (x) => x + 4 ));
55
- test ([1 , 2 , 3 ], 2 , new Iterable .generate (1 , (x) => x + 4 ));
56
- test ([1 , 2 , 3 ], 3 , new Iterable .generate (0 , (x) => x + 4 ));
57
- test ([1 , 2 , 3 ].toList (growable: false ), 0 , [4 , 5 ]);
58
- test ([1 , 2 , 3 ].toList (growable: false ), 1 , [4 , 5 ]);
59
- test ([1 , 2 , 3 ].toList (growable: false ), 2 , [4 ]);
60
- test ([1 , 2 , 3 ].toList (growable: false ), 3 , []);
61
- test ([1 , 2 , 3 ].toList (growable: false ), 0 , [4 , 5 ].map ((x) => x));
62
- test ([1 , 2 , 3 ].toList (growable: false ), 1 , [4 , 5 ].map ((x) => x));
63
- test ([1 , 2 , 3 ].toList (growable: false ), 2 , [4 ].map ((x) => x));
64
- test ([1 , 2 , 3 ].toList (growable: false ), 3 , [].map ((x) => x));
65
- test ([1 , 2 , 3 ].toList (growable: false ), 0 , const [4 , 5 ]);
66
- test ([1 , 2 , 3 ].toList (growable: false ), 1 , const [4 , 5 ]);
67
- test ([1 , 2 , 3 ].toList (growable: false ), 2 , const [4 ]);
68
- test ([1 , 2 , 3 ].toList (growable: false ), 3 , const []);
69
- test ([1 , 2 , 3 ].toList (growable: false ), 0 ,
70
- new Iterable .generate (2 , (x) => x + 4 ));
71
- test ([1 , 2 , 3 ].toList (growable: false ), 1 ,
72
- new Iterable .generate (2 , (x) => x + 4 ));
73
- test ([1 , 2 , 3 ].toList (growable: false ), 2 ,
74
- new Iterable .generate (1 , (x) => x + 4 ));
75
- test ([1 , 2 , 3 ].toList (growable: false ), 3 ,
76
- new Iterable .generate (0 , (x) => x + 4 ));
77
- test (new MyList ([1 , 2 , 3 ]), 0 , [4 , 5 ]);
78
- test (new MyList ([1 , 2 , 3 ]), 1 , [4 , 5 ]);
79
- test (new MyList ([1 , 2 , 3 ]), 2 , [4 ]);
80
- test (new MyList ([1 , 2 , 3 ]), 3 , []);
81
- test (new MyList ([1 , 2 , 3 ]), 0 , [4 , 5 ].map ((x) => x));
82
- test (new MyList ([1 , 2 , 3 ]), 1 , [4 , 5 ].map ((x) => x));
83
- test (new MyList ([1 , 2 , 3 ]), 2 , [4 ].map ((x) => x));
84
- test (new MyList ([1 , 2 , 3 ]), 3 , [].map ((x) => x));
41
+ void main () {
42
+ for (var makeIterable in iterableMakers) {
43
+ test ([1 , 2 , 3 ], 0 , makeIterable ([4 , 5 ]));
44
+ test ([1 , 2 , 3 ], 1 , makeIterable ([4 , 5 ]));
45
+ test ([1 , 2 , 3 ], 2 , makeIterable ([4 ]));
46
+ test ([1 , 2 , 3 ], 3 , makeIterable ([]));
47
+ test ([1 , 2 , 3 ], 0 , makeIterable (const [4 , 5 ]));
48
+ test ([1 , 2 , 3 ], 1 , makeIterable (const [4 , 5 ]));
49
+ test ([1 , 2 , 3 ], 2 , makeIterable (const [4 ]));
50
+ test ([1 , 2 , 3 ], 3 , makeIterable (const []));
51
+ test ([1 , 2 , 3 ].toList (growable: false ), 0 , makeIterable ([4 , 5 ]));
52
+ test ([1 , 2 , 3 ].toList (growable: false ), 1 , makeIterable ([4 , 5 ]));
53
+ test ([1 , 2 , 3 ].toList (growable: false ), 2 , makeIterable ([4 ]));
54
+ test ([1 , 2 , 3 ].toList (growable: false ), 3 , makeIterable ([]));
55
+ test ([1 , 2 , 3 ].toList (growable: false ), 0 , makeIterable (const [4 , 5 ]));
56
+ test ([1 , 2 , 3 ].toList (growable: false ), 1 , makeIterable (const [4 , 5 ]));
57
+ test ([1 , 2 , 3 ].toList (growable: false ), 2 , makeIterable (const [4 ]));
58
+ test ([1 , 2 , 3 ].toList (growable: false ), 3 , makeIterable (const []));
59
+ test (MyList ([1 , 2 , 3 ]), 0 , makeIterable ([4 , 5 ]));
60
+ test (MyList ([1 , 2 , 3 ]), 1 , makeIterable ([4 , 5 ]));
61
+ test (MyList ([1 , 2 , 3 ]), 2 , makeIterable ([4 ]));
62
+ test (MyList ([1 , 2 , 3 ]), 3 , makeIterable ([]));
85
63
86
- Expect .throwsRangeError (() => test ([1 , 2 , 3 ], - 1 , [4 , 5 ]));
87
- Expect .throwsRangeError (
88
- () => test ([1 , 2 , 3 ].toList (growable: false ), - 1 , [4 , 5 ]));
89
- Expect .throwsRangeError (() => test ([1 , 2 , 3 ], 1 , [4 , 5 , 6 ]));
90
- Expect .throwsRangeError (
91
- () => test ([1 , 2 , 3 ].toList (growable: false ), 1 , [4 , 5 , 6 ]));
92
- Expect .throwsRangeError (() => test (new MyList ([1 , 2 , 3 ]), - 1 , [4 , 5 ]));
93
- Expect .throwsRangeError (() => test (new MyList ([1 , 2 , 3 ]), 1 , [4 , 5 , 6 ]));
94
- Expect .throwsUnsupportedError (() => test (const [1 , 2 , 3 ], 0 , [4 , 5 ]));
95
- Expect .throwsUnsupportedError (() => test (const [1 , 2 , 3 ], - 1 , [4 , 5 ]));
96
- Expect .throwsUnsupportedError (() => test (const [1 , 2 , 3 ], 1 , [4 , 5 , 6 ]));
64
+ Expect .throwsRangeError (() => test ([1 , 2 , 3 ], - 1 , makeIterable ([4 , 5 ])));
65
+ Expect .throwsRangeError (() =>
66
+ test ([1 , 2 , 3 ].toList (growable: false ), - 1 , makeIterable ([4 , 5 ])));
67
+ Expect .throwsRangeError (() => test ([1 , 2 , 3 ], 1 , makeIterable ([4 , 5 , 6 ])));
68
+ Expect .throwsRangeError (() =>
69
+ test ([1 , 2 , 3 ].toList (growable: false ), 1 , makeIterable ([4 , 5 , 6 ])));
70
+ Expect .throwsRangeError (
71
+ () => test (MyList ([1 , 2 , 3 ]), - 1 , makeIterable ([4 , 5 ])));
72
+ Expect .throwsRangeError (
73
+ () => test (MyList ([1 , 2 , 3 ]), 1 , makeIterable ([4 , 5 , 6 ])));
74
+ Expect .throwsUnsupportedError (
75
+ () => test (const [1 , 2 , 3 ], 0 , makeIterable ([4 , 5 ])));
76
+ Expect .throwsUnsupportedError (
77
+ () => test (const [1 , 2 , 3 ], - 1 , makeIterable ([4 , 5 ])));
78
+ Expect .throwsUnsupportedError (
79
+ () => test (const [1 , 2 , 3 ], 1 , makeIterable ([4 , 5 , 6 ])));
80
+ }
97
81
}
82
+
83
+ // `setAll` implementations can have type tests and special cases to handle
84
+ // different types of iterables differently, so we test with a few different
85
+ // types of iterables.
86
+ List <Iterable <int > Function (List <int >)> iterableMakers = [
87
+ (list) => list,
88
+ MyList .new ,
89
+ (list) => list.where ((x) => true ),
90
+ (list) => list.map ((x) => x),
91
+ (list) => list.getRange (0 , list.length),
92
+ ];
0 commit comments