audio: Add tests for state changes while buffering
This commit is contained in:
parent
7975815cde
commit
d8c41de2f7
@ -342,9 +342,10 @@ class Audio(pykka.ThreadingActor):
|
||||
if percent < 10 and not self._buffering:
|
||||
self._playbin.set_state(gst.STATE_PAUSED)
|
||||
self._buffering = True
|
||||
if percent == 100 and self._target_state == gst.STATE_PLAYING:
|
||||
self._playbin.set_state(gst.STATE_PLAYING)
|
||||
if percent == 100:
|
||||
self._buffering = False
|
||||
if self._target_state == gst.STATE_PLAYING:
|
||||
self._playbin.set_state(gst.STATE_PLAYING)
|
||||
|
||||
logger.debug('Buffer %d%% full', percent)
|
||||
|
||||
@ -484,6 +485,7 @@ class Audio(pykka.ThreadingActor):
|
||||
|
||||
:rtype: :class:`True` if successfull, else :class:`False`
|
||||
"""
|
||||
self._buffering = False
|
||||
return self._set_state(gst.STATE_NULL)
|
||||
|
||||
def _set_state(self, state):
|
||||
|
||||
@ -178,6 +178,7 @@ class AudioBufferingTest(unittest.TestCase):
|
||||
|
||||
self.audio._on_buffering(0)
|
||||
playbin.set_state.assert_called_with(gst.STATE_PAUSED)
|
||||
self.assertTrue(self.audio._buffering)
|
||||
|
||||
def test_stay_paused_when_buffering_finished(self):
|
||||
playbin = self.audio._playbin
|
||||
@ -187,3 +188,33 @@ class AudioBufferingTest(unittest.TestCase):
|
||||
|
||||
self.audio._on_buffering(100)
|
||||
self.assertEqual(playbin.set_state.call_count, 0)
|
||||
self.assertFalse(self.audio._buffering)
|
||||
|
||||
def test_change_to_paused_while_buffering(self):
|
||||
playbin = self.audio._playbin
|
||||
self.audio.start_playback()
|
||||
playbin.set_state.assert_called_with(gst.STATE_PLAYING)
|
||||
playbin.set_state.reset_mock()
|
||||
|
||||
self.audio._on_buffering(0)
|
||||
playbin.set_state.assert_called_with(gst.STATE_PAUSED)
|
||||
self.audio.pause_playback()
|
||||
playbin.set_state.reset_mock()
|
||||
|
||||
self.audio._on_buffering(100)
|
||||
self.assertEqual(playbin.set_state.call_count, 0)
|
||||
self.assertFalse(self.audio._buffering)
|
||||
|
||||
def test_change_to_stopped_while_buffering(self):
|
||||
playbin = self.audio._playbin
|
||||
self.audio.start_playback()
|
||||
playbin.set_state.assert_called_with(gst.STATE_PLAYING)
|
||||
playbin.set_state.reset_mock()
|
||||
|
||||
self.audio._on_buffering(0)
|
||||
playbin.set_state.assert_called_with(gst.STATE_PAUSED)
|
||||
playbin.set_state.reset_mock()
|
||||
|
||||
self.audio.stop_playback()
|
||||
playbin.set_state.assert_called_with(gst.STATE_NULL)
|
||||
self.assertFalse(self.audio._buffering)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user