@@ -43,13 +43,25 @@ def test__init__(self):
43
43
self .assertEqual (ble ._list , [])
44
44
self .assertEqual (ble ._set , set ())
45
45
46
+ def test__init__duplicates (self ):
47
+ ble = _BlockLevelElements (["a" , "a" , "b" ])
48
+ self .assertEqual (ble ._list , ["a" , "a" , "b" ])
49
+ self .assertEqual (ble ._set , {"a" , "b" })
50
+
46
51
def test___add__ (self ):
47
- ble = _BlockLevelElements (["a" , "b" , ])
52
+ ble = _BlockLevelElements (["a" , "b" ])
48
53
with self .assertWarns (DeprecationWarning ):
49
54
ble2 = ble + ["c" , "d" ]
50
55
self .assertIsInstance (ble2 , list )
51
56
self .assertEqual (ble2 , ["a" , "b" , "c" , "d" ])
52
57
58
+ def test___add__duplicates (self ):
59
+ ble = _BlockLevelElements (["a" , "b" ])
60
+ with self .assertWarns (DeprecationWarning ):
61
+ ble2 = ble + ["a" , "b" ]
62
+ self .assertIsInstance (ble2 , list )
63
+ self .assertEqual (ble2 , ["a" , "b" , "a" , "b" ])
64
+
53
65
def test___and__ (self ):
54
66
ble = _BlockLevelElements (["a" , "b" ])
55
67
ble2 = ble & {"b" , "c" }
@@ -74,6 +86,13 @@ def test___delitem__(self):
74
86
with self .assertWarns (DeprecationWarning ):
75
87
self .assertRaises (IndexError , ble .__delitem__ , 10 )
76
88
89
+ def test___delitem__duplicates (self ):
90
+ ble = _BlockLevelElements (["a" , "a" , "b" ])
91
+ with self .assertWarns (DeprecationWarning ):
92
+ del ble [0 ]
93
+ self .assertEqual (ble ._list , ["a" , "b" ])
94
+ self .assertEqual (ble ._set , {"a" , "b" })
95
+
77
96
def test___getitem__ (self ):
78
97
ble = _BlockLevelElements (["a" , "b" , "c" ])
79
98
with self .assertWarns (DeprecationWarning ):
@@ -82,13 +101,27 @@ def test___getitem__(self):
82
101
self .assertEqual (ble [2 ], "c" )
83
102
self .assertRaises (IndexError , ble .__getitem__ , 10 )
84
103
104
+ def test___getitem__duplicates (self ):
105
+ ble = _BlockLevelElements (["a" , "a" , "b" ])
106
+ with self .assertWarns (DeprecationWarning ):
107
+ self .assertEqual (ble [0 ], "a" )
108
+ self .assertEqual (ble [1 ], "a" )
109
+ self .assertEqual (ble [2 ], "b" )
110
+
85
111
def test___iadd__ (self ):
86
112
ble = _BlockLevelElements (["a" , "b" ])
87
113
with self .assertWarns (DeprecationWarning ):
88
114
ble += ["c" , "d" ]
89
115
self .assertEqual (ble ._list , ["a" , "b" , "c" , "d" ])
90
116
self .assertEqual (ble ._set , {"a" , "b" , "c" , "d" })
91
117
118
+ def test___iadd__duplicates (self ):
119
+ ble = _BlockLevelElements (["a" , "b" ])
120
+ with self .assertWarns (DeprecationWarning ):
121
+ ble += ["a" , "b" ]
122
+ self .assertEqual (ble ._list , ["a" , "b" , "a" , "b" ])
123
+ self .assertEqual (ble ._set , {"a" , "b" })
124
+
92
125
def test___iand__ (self ):
93
126
ble = _BlockLevelElements (["a" , "b" ])
94
127
ble &= {"b" , "c" }
@@ -105,11 +138,19 @@ def test___iter__(self):
105
138
ble = _BlockLevelElements (["a" , "b" , "c" ])
106
139
self .assertEqual (tuple (ble ), ("a" , "b" , "c" ))
107
140
141
+ def test___iter__duplicates (self ):
142
+ ble = _BlockLevelElements (["a" , "a" , "b" ])
143
+ self .assertEqual (tuple (ble ), ("a" , "a" , "b" ))
144
+
108
145
def test___len__ (self ):
109
146
self .assertEqual (len (_BlockLevelElements ([])), 0 )
110
- self .assertEqual (len (_BlockLevelElements (["a" , "a " ])), 2 )
147
+ self .assertEqual (len (_BlockLevelElements (["a" , "b " ])), 2 )
111
148
self .assertEqual (len (_BlockLevelElements (["a" , "b" , "c" ])), 3 )
112
149
150
+ def test___len__duplicates (self ):
151
+ self .assertEqual (len (_BlockLevelElements (["a" , "a" ])), 2 )
152
+ self .assertEqual (len (_BlockLevelElements (["a" , "a" , "b" ])), 3 )
153
+
113
154
def test___or__ (self ):
114
155
ble = _BlockLevelElements (["a" , "b" ])
115
156
ble2 = ble | {"b" , "c" }
@@ -157,6 +198,11 @@ def test___reversed__(self):
157
198
with self .assertWarns (DeprecationWarning ):
158
199
self .assertEqual (tuple (reversed (ble )), ("c" , "b" , "a" ))
159
200
201
+ def test___reversed__duplicates (self ):
202
+ ble = _BlockLevelElements (["a" , "a" , "b" ])
203
+ with self .assertWarns (DeprecationWarning ):
204
+ self .assertEqual (tuple (reversed (ble )), ("b" , "a" , "a" ))
205
+
160
206
def test___setitem__ (self ):
161
207
ble = _BlockLevelElements (["a" , "b" , "c" ])
162
208
with self .assertWarns (DeprecationWarning ):
@@ -170,6 +216,17 @@ def test___setitem__(self):
170
216
with self .assertWarns (DeprecationWarning ):
171
217
self .assertRaises (IndexError , ble .__setitem__ , 10 , "f" )
172
218
219
+ def test___setitem__duplicates (self ):
220
+ ble = _BlockLevelElements (["a" , "a" , "b" ])
221
+ with self .assertWarns (DeprecationWarning ):
222
+ ble [0 ] = "b"
223
+ self .assertEqual (ble ._list , ["b" , "a" , "b" ])
224
+ self .assertEqual (ble ._set , {"a" , "b" })
225
+ with self .assertWarns (DeprecationWarning ):
226
+ ble [1 ] = "b"
227
+ self .assertEqual (ble ._list , ["b" , "b" , "b" ])
228
+ self .assertEqual (ble ._set , {"b" })
229
+
173
230
def test___str__ (self ):
174
231
ble = _BlockLevelElements (["a" ])
175
232
self .assertEqual (str (ble ), "{'a'}" )
@@ -180,13 +237,26 @@ def test_add(self):
180
237
self .assertEqual (ble ._list , ["a" , "b" , "c" ])
181
238
self .assertEqual (ble ._set , {"a" , "b" , "c" })
182
239
240
+ def test_add_duplicates (self ):
241
+ ble = _BlockLevelElements (["a" , "b" ])
242
+ ble .add ("a" )
243
+ self .assertEqual (ble ._list , ["a" , "b" , "a" ])
244
+ self .assertEqual (ble ._set , {"a" , "b" })
245
+
183
246
def test_append (self ):
184
247
ble = _BlockLevelElements (["a" , "b" ])
185
248
with self .assertWarns (DeprecationWarning ):
186
249
ble .append ("c" )
187
250
self .assertEqual (ble ._list , ["a" , "b" , "c" ])
188
251
self .assertEqual (ble ._set , {"a" , "b" , "c" })
189
252
253
+ def test_append_duplicates (self ):
254
+ ble = _BlockLevelElements (["a" , "b" ])
255
+ with self .assertWarns (DeprecationWarning ):
256
+ ble .append ("a" )
257
+ self .assertEqual (ble ._list , ["a" , "b" , "a" ])
258
+ self .assertEqual (ble ._set , {"a" , "b" })
259
+
190
260
def test_clear (self ):
191
261
ble = _BlockLevelElements (["a" , "b" ])
192
262
ble .clear ()
@@ -200,13 +270,25 @@ def test_copy(self):
200
270
self .assertEqual (ble2 ._list , ["a" , "b" ])
201
271
self .assertEqual (ble2 ._set , {"a" , "b" })
202
272
273
+ def test_copy_duplicates (self ):
274
+ ble = _BlockLevelElements (["a" , "a" ])
275
+ ble2 = ble .copy ()
276
+ self .assertIsNot (ble2 , ble )
277
+ self .assertEqual (ble2 ._list , ["a" , "a" ])
278
+ self .assertEqual (ble2 ._set , {"a" })
279
+
203
280
def test_count (self ):
204
- ble = _BlockLevelElements (["a" , "b" , "a" ])
281
+ ble = _BlockLevelElements (["a" , "b" ])
205
282
with self .assertWarns (DeprecationWarning ):
206
- self .assertEqual (ble .count ("a" ), 2 )
283
+ self .assertEqual (ble .count ("a" ), 1 )
207
284
self .assertEqual (ble .count ("b" ), 1 )
208
285
self .assertEqual (ble .count ("c" ), 0 )
209
286
287
+ def test_count_duplicates (self ):
288
+ ble = _BlockLevelElements (["a" , "a" ])
289
+ with self .assertWarns (DeprecationWarning ):
290
+ self .assertEqual (ble .count ("a" ), 2 )
291
+
210
292
def test_difference (self ):
211
293
ble = _BlockLevelElements (["a" , "b" ])
212
294
ble2 = ble .difference ({"b" , "c" })
@@ -222,6 +304,7 @@ def test_difference_update(self):
222
304
def test_discard (self ):
223
305
ble = _BlockLevelElements (["a" , "b" ])
224
306
ble .discard ("b" )
307
+ ble .discard ("b" ) # Assert no error.
225
308
self .assertEqual (ble ._list , ["a" ])
226
309
self .assertEqual (ble ._set , {"a" })
227
310
@@ -232,6 +315,13 @@ def test_extend(self):
232
315
self .assertEqual (ble ._list , ["a" , "b" , "c" , "d" ])
233
316
self .assertEqual (ble ._set , {"a" , "b" , "c" , "d" })
234
317
318
+ def test_extend_duplicates (self ):
319
+ ble = _BlockLevelElements (["a" , "b" ])
320
+ with self .assertWarns (DeprecationWarning ):
321
+ ble .extend (["a" , "b" ])
322
+ self .assertEqual (ble ._list , ["a" , "b" , "a" , "b" ])
323
+ self .assertEqual (ble ._set , {"a" , "b" })
324
+
235
325
def test_index (self ):
236
326
ble = _BlockLevelElements (["a" , "b" , "c" ])
237
327
with self .assertWarns (DeprecationWarning ):
@@ -240,6 +330,13 @@ def test_index(self):
240
330
self .assertEqual (ble .index ("c" ), 2 )
241
331
self .assertRaises (ValueError , ble .index , "d" )
242
332
333
+ def test_index_duplicates (self ):
334
+ ble = _BlockLevelElements (["a" , "b" , "b" ])
335
+ with self .assertWarns (DeprecationWarning ):
336
+ self .assertEqual (ble .index ("b" ), 1 )
337
+ with self .assertWarns (DeprecationWarning ):
338
+ self .assertEqual (ble .index ("b" , 2 ), 2 )
339
+
243
340
def test_insert (self ):
244
341
ble = _BlockLevelElements (["a" , "b" , "c" ])
245
342
with self .assertWarns (DeprecationWarning ):
@@ -250,6 +347,13 @@ def test_insert(self):
250
347
ble .insert (100 , "e" )
251
348
self .assertIn ("e" , ble )
252
349
350
+ def test_insert_duplicates (self ):
351
+ ble = _BlockLevelElements (["a" , "a" , "b" ])
352
+ with self .assertWarns (DeprecationWarning ):
353
+ ble .insert (1 , "b" )
354
+ self .assertEqual (ble ._list , ["a" , "b" , "a" , "b" ])
355
+ self .assertEqual (ble ._set , {"a" , "b" })
356
+
253
357
def test_intersection (self ):
254
358
ble = _BlockLevelElements (["a" , "b" ])
255
359
ble2 = ble .intersection ({"b" , "c" })
@@ -288,27 +392,59 @@ def test_pop(self):
288
392
self .assertEqual (ble ._set , {"b" })
289
393
self .assertRaises (IndexError , ble .pop , 10 )
290
394
395
+ def test_pop_duplicates (self ):
396
+ ble = _BlockLevelElements (["a" , "a" , "b" , "b" ])
397
+ self .assertEqual (ble .pop (), "b" )
398
+ self .assertEqual (ble ._list , ["a" , "a" , "b" ])
399
+ self .assertEqual (ble ._set , {"a" , "b" })
400
+ self .assertEqual (ble .pop (0 ), "a" )
401
+ self .assertEqual (ble ._list , ["a" , "b" ])
402
+ self .assertEqual (ble ._set , {"a" , "b" })
403
+ self .assertEqual (ble .pop (), "b" )
404
+ self .assertEqual (ble ._list , ["a" ])
405
+ self .assertEqual (ble ._set , {"a" })
406
+
291
407
def test_remove (self ):
292
408
ble = _BlockLevelElements (["a" , "b" , "c" ])
293
409
ble .remove ("b" )
294
410
self .assertEqual (ble ._list , ["a" , "c" ])
295
411
self .assertEqual (ble ._set , {"a" , "c" })
296
412
self .assertRaises (ValueError , ble .remove , "d" )
297
413
414
+ def test_remove_duplicates (self ):
415
+ ble = _BlockLevelElements (["a" , "a" , "b" ])
416
+ ble .remove ("a" )
417
+ self .assertEqual (ble ._list , ["b" ])
418
+ self .assertEqual (ble ._set , {"b" })
419
+
298
420
def test_reverse (self ):
299
421
ble = _BlockLevelElements (["a" , "b" , "c" ])
300
422
with self .assertWarns (DeprecationWarning ):
301
423
ble .reverse ()
302
424
self .assertEqual (ble ._list , ["c" , "b" , "a" ])
303
425
self .assertEqual (ble ._set , {"a" , "b" , "c" })
304
426
427
+ def test_reverse_duplicates (self ):
428
+ ble = _BlockLevelElements (["a" , "a" , "b" ])
429
+ with self .assertWarns (DeprecationWarning ):
430
+ ble .reverse ()
431
+ self .assertEqual (ble ._list , ["b" , "a" , "a" ])
432
+ self .assertEqual (ble ._set , {"a" , "b" })
433
+
305
434
def test_sort (self ):
306
435
ble = _BlockLevelElements (["c" , "a" , "b" ])
307
436
with self .assertWarns (DeprecationWarning ):
308
437
ble .sort ()
309
438
self .assertEqual (ble ._list , ["a" , "b" , "c" ])
310
439
self .assertEqual (ble ._set , {"a" , "b" , "c" })
311
440
441
+ def test_sort_duplicates (self ):
442
+ ble = _BlockLevelElements (["b" , "a" , "b" ])
443
+ with self .assertWarns (DeprecationWarning ):
444
+ ble .sort ()
445
+ self .assertEqual (ble ._list , ["a" , "b" , "b" ])
446
+ self .assertEqual (ble ._set , {"a" , "b" })
447
+
312
448
def test_symmetric_difference (self ):
313
449
ble = _BlockLevelElements (["a" , "b" ])
314
450
ble2 = ble .symmetric_difference ({"b" , "c" })
0 commit comments