39
39
40
40
LONG_NUMBER = 6227020800 ;
41
41
42
+ import list_tests
42
43
43
44
44
- class ListTest (seq_tests .CommonTest ):
45
-
46
- type2test = tuple
47
-
45
+ class ListTest (list_tests .CommonTest ):
46
+ type2test = list
47
+
48
48
# ======== Specific test for Graal Python ======
49
+
49
50
def test_getitem (self ):
50
51
l = [1 , 2 , 3 ]
51
52
self .assertEqual (1 , l [False ])
@@ -161,7 +162,6 @@ def test_slice(self):
161
162
self .slice_test (list (range (0 ,20 )), slice (- 15 ,6 ,- 5 ), [])
162
163
self .slice_test (list (range (0 ,20 )), slice (- 2 , - 21 , - 4 ), [18 , 14 , 10 , 6 , 2 ])
163
164
164
-
165
165
def del_slice (self , l , s , expected ):
166
166
tmplist = list (l )
167
167
del (tmplist [s ])
@@ -172,7 +172,6 @@ def del_slice(self, l, s, expected):
172
172
else :
173
173
del (tmplist [s .start :s .stop :s .step ])
174
174
self .assertEqual (tmplist , expected , "del(list( slice({}, {}, {}))) expected: {}, get: {}" .format (s .start , s .stop , s .step , expected , tmplist ))
175
-
176
175
177
176
def test_del_slice (self ):
178
177
self .del_slice (list (range (0 , 20 )), slice (1 , 19 ), [0 , 19 ])
@@ -202,3 +201,81 @@ def test_del_slice_step(self):
202
201
self .del_slice (list (range (0 , 20 )), slice (- 4 , - 18 , - 3 ), [0 , 1 , 2 , 3 , 5 , 6 , 8 , 9 , 11 , 12 , 14 , 15 , 17 , 18 , 19 ])
203
202
self .del_slice (list (range (0 , 20 )), slice (- 3 , - 55 , - 4 ), [0 , 2 , 3 , 4 , 6 , 7 , 8 , 10 , 11 , 12 , 14 , 15 , 16 , 18 , 19 ])
204
203
self .del_slice (list (range (0 , 20 )), slice (- 1 , - 55 , - 4 ), [0 , 1 , 2 , 4 , 5 , 6 , 8 , 9 , 10 , 12 , 13 , 14 , 16 , 17 , 18 ])
204
+
205
+ def test_ininicialization_with_slice (self ):
206
+ r = []
207
+ l = [1 ,2 ,3 ,4 ]
208
+ r [:] = l
209
+ self .assertEqual (l , r )
210
+
211
+ def test_set_slice (self ):
212
+ a = [1 ,2 ]
213
+ a [1 :2 ] = [7 ,6 ,5 ,4 ]
214
+ self .assertEqual ([1 , 7 , 6 , 5 , 4 ], a )
215
+ a = [1 , 2 , 3 , 4 ]
216
+ a [1 :8 ] = [33 ]
217
+ self .assertEqual ([1 , 33 ], a )
218
+ a = [1 ,2 ,3 ,4 ]
219
+ a [1 :8 ] = [33 ,34 ,35 ,36 ,37 ,38 ]
220
+ self .assertEqual ([1 , 33 ,34 ,35 ,36 ,37 ,38 ], a )
221
+ a = list (range (20 ))
222
+ a [1 :19 ] = [55 , 55 ]
223
+ self .assertEqual ([0 ,55 ,55 ,19 ],a )
224
+ a = [1 ,2 ,3 ,4 ]
225
+ a [1 :3 ] = [11 ]
226
+ self .assertEqual ([1 , 11 , 4 ], a )
227
+ a = [1 ,2 ,3 ,4 ]
228
+ a [1 :3 ] = [11 ,12 ,13 ,14 ,15 ,16 ]
229
+ self .assertEqual ([1 , 11 ,12 ,13 ,14 ,15 ,16 , 4 ], a )
230
+ a = [1 ,2 ]
231
+ a [:] = (1 , 2 , 4 , 5 )
232
+ self .assertEqual ([1 ,2 ,4 ,5 ], a )
233
+
234
+ def test_set_slice_class_iter (self ):
235
+ class MyIter ():
236
+ def __init__ (self , base ):
237
+ self .itera = iter (base )
238
+ def __next__ (self ):
239
+ return next (self .itera )
240
+ def __iter__ (self ):
241
+ return self
242
+
243
+ a = list (range (10 ))
244
+ a [::2 ] = MyIter (tuple (range (5 )))
245
+ self .assertEqual ([0 , 1 , 1 , 3 , 2 , 5 , 3 , 7 , 4 , 9 ], a )
246
+
247
+ def test_set_slice_class_getitem (self ):
248
+ class MyIter2 ():
249
+ def __init__ (self , base ):
250
+ self .base = base
251
+ def __getitem__ (self , key ):
252
+ return self .base [key ]
253
+
254
+ a = [1 ,2 ,3 ,4 ]
255
+ a [2 :] = MyIter2 ([33 ,44 ,55 ,66 ])
256
+ self .assertEqual ([1 ,2 ,33 ,44 ,55 ,66 ], a )
257
+
258
+ def test_set_strange_slice (self ):
259
+ a = list (range (20 ))
260
+ a [18 :2 ] = [4 ,3 ,5 ]
261
+ self .assertEqual ([0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 4 , 3 , 5 , 18 , 19 ], a )
262
+ a = list (range (20 ))
263
+ a [18 :0 :- 2 ] = [11 ,22 ,33 ,44 ,55 ,66 ,77 ,88 ,99 ]
264
+ self .assertEqual ([0 , 1 , 99 , 3 , 88 , 5 , 77 , 7 , 66 , 9 , 55 , 11 , 44 , 13 , 33 , 15 , 22 , 17 , 11 , 19 ], a )
265
+ a = list (range (20 ))
266
+ a [18 :- 5 ] = [11 ,22 ,33 ,44 ,55 ,66 ,77 ,88 ,99 ]
267
+ self .assertEqual ([0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 11 , 22 , 33 , 44 , 55 , 66 , 77 , 88 , 99 , 18 , 19 ], a )
268
+ a = list (range (20 ))
269
+ a [- 2 :- 20 :- 2 ] = [11 ,22 ,33 ,44 ,55 ,66 ,77 ,88 ,99 ]
270
+ self .assertEqual ([0 , 1 , 99 , 3 , 88 , 5 , 77 , 7 , 66 , 9 , 55 , 11 , 44 , 13 , 33 , 15 , 22 , 17 , 11 , 19 ], a )
271
+ a = list (range (20 ))
272
+ a [20 :- 20 ] = [11 ,22 ,33 ,44 ,55 ,66 ,77 ,88 ,99 ]
273
+ self .assertEqual ([0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 11 , 22 , 33 , 44 , 55 , 66 , 77 , 88 , 99 ], a )
274
+
275
+ def test_set_slice_generalize_storage (self ):
276
+ a = [1 ,2 ]
277
+ a [:] = 'ahoj'
278
+ self .assertEqual (['a' , 'h' , 'o' , 'j' ], a )
279
+ a = [1 ,2 ]
280
+ a [1 :5 ] = [1.1 , 2.2 , 3.3 ]
281
+ self .assertEqual ([1 ,1.1 , 2.2 , 3.3 ], a )
0 commit comments