1
+ import collections
1
2
import threading
2
3
from unittest import mock
3
4
@@ -64,7 +65,7 @@ def test_connect_events_adds_music_delivery_handler_to_session(
64
65
playback_provider ._seeking_event ,
65
66
playback_provider ._push_audio_data_event ,
66
67
playback_provider ._buffer_timestamp ,
67
- playback_provider ._held_buffer ,
68
+ playback_provider ._held_buffers ,
68
69
)
69
70
in session_mock .on .call_args_list
70
71
)
@@ -137,14 +138,14 @@ def test_change_track_clears_state(audio_mock, provider):
137
138
provider ._first_seek = False
138
139
provider ._buffer_timestamp .set (99 )
139
140
provider ._end_of_track_event .set ()
140
- provider ._held_buffer . data = mock .sentinel .gst_buffer
141
+ provider ._held_buffers = collections . deque ([ mock .sentinel .gst_buffer ])
141
142
142
143
assert provider .change_track (track ) is True
143
144
144
145
assert provider ._first_seek
145
146
assert provider ._buffer_timestamp .get () == 0
146
147
assert not provider ._end_of_track_event .is_set ()
147
- assert provider ._held_buffer . data is None
148
+ assert len ( provider ._held_buffers ) == 0
148
149
149
150
150
151
def test_resume_starts_spotify_playback (session_mock , provider ):
@@ -225,7 +226,7 @@ def test_music_delivery_rejects_data_when_seeking(session_mock, audio_mock):
225
226
push_audio_data_event = threading .Event ()
226
227
push_audio_data_event .set ()
227
228
buffer_timestamp = mock .Mock ()
228
- held_buffer = playback . BufferData ( mock .sentinel .gst_buffer )
229
+ held_buffer = collections . deque ([ mock .sentinel .gst_buffer ] )
229
230
assert seeking_event .is_set ()
230
231
231
232
result = playback .music_delivery_callback (
@@ -257,7 +258,7 @@ def test_music_delivery_when_seeking_accepts_data_after_empty_delivery(
257
258
push_audio_data_event = threading .Event ()
258
259
push_audio_data_event .set ()
259
260
buffer_timestamp = mock .Mock ()
260
- held_buffer = playback . BufferData ( mock .sentinel .gst_buffer )
261
+ held_buffer = collections . deque ([ mock .sentinel .gst_buffer ] )
261
262
assert seeking_event .is_set ()
262
263
263
264
result = playback .music_delivery_callback (
@@ -287,7 +288,7 @@ def test_music_delivery_rejects_data_depending_on_push_audio_data_event(
287
288
seeking_event = threading .Event ()
288
289
push_audio_data_event = threading .Event ()
289
290
buffer_timestamp = mock .Mock ()
290
- held_buffer = playback . BufferData ( mock .sentinel .gst_buffer )
291
+ held_buffer = collections . deque ([ mock .sentinel .gst_buffer ] )
291
292
assert not push_audio_data_event .is_set ()
292
293
293
294
result = playback .music_delivery_callback (
@@ -317,7 +318,7 @@ def test_music_delivery_shortcuts_if_no_data_in_frames(
317
318
push_audio_data_event = threading .Event ()
318
319
push_audio_data_event .set ()
319
320
buffer_timestamp = mock .Mock ()
320
- held_buffer = playback . BufferData ( mock .sentinel .gst_buffer )
321
+ held_buffer = collections . deque ([ mock .sentinel .gst_buffer ] )
321
322
322
323
result = playback .music_delivery_callback (
323
324
session_mock ,
@@ -345,7 +346,7 @@ def test_music_delivery_rejects_unknown_audio_formats(session_mock, audio_mock):
345
346
push_audio_data_event = threading .Event ()
346
347
push_audio_data_event .set ()
347
348
buffer_timestamp = mock .Mock ()
348
- held_buffer = playback . BufferData ( mock .sentinel .gst_buffer )
349
+ held_buffer = collections . deque ([ mock .sentinel .gst_buffer ] )
349
350
350
351
with pytest .raises (AssertionError ) as excinfo :
351
352
playback .music_delivery_callback (
@@ -378,7 +379,7 @@ def test_music_delivery_creates_gstreamer_buffer_and_holds_it(
378
379
push_audio_data_event .set ()
379
380
buffer_timestamp = mock .Mock ()
380
381
buffer_timestamp .get .return_value = mock .sentinel .timestamp
381
- held_buffer = playback . BufferData ( None )
382
+ held_buffer = collections . deque ( )
382
383
383
384
result = playback .music_delivery_callback (
384
385
session_mock ,
@@ -401,7 +402,7 @@ def test_music_delivery_creates_gstreamer_buffer_and_holds_it(
401
402
buffer_timestamp .increase .assert_called_once_with (mock .sentinel .duration )
402
403
audio_mock .emit_data .assert_not_called ()
403
404
assert result == num_frames
404
- assert held_buffer . data == mock .sentinel .gst_buffer
405
+ assert list ( held_buffer ) == [ mock .sentinel .gst_buffer ]
405
406
406
407
407
408
def test_music_delivery_gives_held_buffer_to_audio_and_holds_created (
@@ -416,7 +417,7 @@ def test_music_delivery_gives_held_buffer_to_audio_and_holds_created(
416
417
push_audio_data_event = threading .Event ()
417
418
push_audio_data_event .set ()
418
419
buffer_timestamp = mock .Mock ()
419
- held_buffer = playback . BufferData ( mock .sentinel .gst_buffer1 )
420
+ held_buffer = collections . deque ([ mock .sentinel .gst_buffer1 ] )
420
421
421
422
result = playback .music_delivery_callback (
422
423
session_mock ,
@@ -431,7 +432,7 @@ def test_music_delivery_gives_held_buffer_to_audio_and_holds_created(
431
432
)
432
433
assert result == num_frames
433
434
audio_mock .emit_data .assert_called_once_with (mock .sentinel .gst_buffer1 )
434
- assert held_buffer . data == mock .sentinel .gst_buffer2
435
+ assert list ( held_buffer ) == [ mock .sentinel .gst_buffer2 ]
435
436
436
437
437
438
def test_music_delivery_consumes_zero_frames_if_audio_fails (
@@ -449,7 +450,7 @@ def test_music_delivery_consumes_zero_frames_if_audio_fails(
449
450
push_audio_data_event .set ()
450
451
buffer_timestamp = mock .Mock ()
451
452
buffer_timestamp .get .return_value = mock .sentinel .timestamp
452
- held_buffer = playback . BufferData ( mock .sentinel .gst_buffer )
453
+ held_buffer = collections . deque ([ mock .sentinel .gst_buffer1 ] )
453
454
454
455
result = playback .music_delivery_callback (
455
456
session_mock ,
@@ -465,7 +466,7 @@ def test_music_delivery_consumes_zero_frames_if_audio_fails(
465
466
466
467
assert buffer_timestamp .increase .call_count == 0
467
468
assert result == 0
468
- assert held_buffer . data == mock .sentinel .gst_buffer2 # SPONG
469
+ assert list ( held_buffer ) == [ mock .sentinel .gst_buffer1 ]
469
470
470
471
471
472
def test_end_of_track_callback (session_mock , audio_mock ):
0 commit comments