@@ -208,18 +208,64 @@ def test_empty(self):
208
208
self .assertIs (after , True )
209
209
210
210
def test_full (self ):
211
- expected = [False , False , False , True , False , False , False ]
212
- actual = []
213
- queue = queues .create (3 )
214
- for _ in range (3 ):
215
- actual .append (queue .full ())
216
- queue .put (None )
217
- actual .append (queue .full ())
218
- for _ in range (3 ):
219
- queue .get ()
220
- actual .append (queue .full ())
211
+ for maxsize in [1 , 3 , 11 ]:
212
+ with self .subTest (f'maxsize={ maxsize } ' ):
213
+ num_to_add = maxsize
214
+ expected = [False ] * (num_to_add * 2 + 3 )
215
+ expected [maxsize ] = True
216
+ expected [maxsize + 1 ] = True
217
+
218
+ queue = queues .create (maxsize )
219
+ actual = []
220
+ empty = [queue .empty ()]
221
+
222
+ for _ in range (num_to_add ):
223
+ actual .append (queue .full ())
224
+ queue .put_nowait (None )
225
+ actual .append (queue .full ())
226
+ with self .assertRaises (queues .QueueFull ):
227
+ queue .put_nowait (None )
228
+ empty .append (queue .empty ())
229
+
230
+ for _ in range (num_to_add ):
231
+ actual .append (queue .full ())
232
+ queue .get_nowait ()
233
+ actual .append (queue .full ())
234
+ with self .assertRaises (queues .QueueEmpty ):
235
+ queue .get_nowait ()
236
+ actual .append (queue .full ())
237
+ empty .append (queue .empty ())
221
238
222
- self .assertEqual (actual , expected )
239
+ self .assertEqual (actual , expected )
240
+ self .assertEqual (empty , [True , False , True ])
241
+
242
+ # no max size
243
+ for args in [(), (0 ,), (- 1 ,), (- 10 ,)]:
244
+ with self .subTest (f'maxsize={ args [0 ]} ' if args else '<default>' ):
245
+ num_to_add = 13
246
+ expected = [False ] * (num_to_add * 2 + 3 )
247
+
248
+ queue = queues .create (* args )
249
+ actual = []
250
+ empty = [queue .empty ()]
251
+
252
+ for _ in range (num_to_add ):
253
+ actual .append (queue .full ())
254
+ queue .put_nowait (None )
255
+ actual .append (queue .full ())
256
+ empty .append (queue .empty ())
257
+
258
+ for _ in range (num_to_add ):
259
+ actual .append (queue .full ())
260
+ queue .get_nowait ()
261
+ actual .append (queue .full ())
262
+ with self .assertRaises (queues .QueueEmpty ):
263
+ queue .get_nowait ()
264
+ actual .append (queue .full ())
265
+ empty .append (queue .empty ())
266
+
267
+ self .assertEqual (actual , expected )
268
+ self .assertEqual (empty , [True , False , True ])
223
269
224
270
def test_qsize (self ):
225
271
expected = [0 , 1 , 2 , 3 , 2 , 3 , 2 , 1 , 0 , 1 , 0 ]
0 commit comments