Test and implement mpris.PlayPause()

This commit is contained in:
Stein Magnus Jodal 2011-06-07 00:43:07 +02:00
parent 1e73e7bbf7
commit 8bea548518
2 changed files with 35 additions and 8 deletions

View File

@ -248,14 +248,13 @@ class MprisObject(dbus.service.Object):
@dbus.service.method(dbus_interface=PLAYER_IFACE)
def PlayPause(self):
logger.debug(u'%s.PlayPause called', PLAYER_IFACE)
# TODO Pseudo code:
# if playback.state == playback.PLAYING: playback.pause()
# elif playback.state == playback.PAUSED: playback.resume()
# elif playback.state == playback.STOPPED: playback.play()
# XXX Proof of concept only. Throw away, write tests, reimplement:
self.backend.playback.pause().get()
state = self.backend.playback.state.get()
if state == PlaybackController.PLAYING:
self.backend.playback.pause().get()
elif state == PlaybackController.PAUSED:
self.backend.playback.resume().get()
elif state == PlaybackController.STOPPED:
self.backend.playback.play().get()
@dbus.service.method(dbus_interface=PLAYER_IFACE)
def Stop(self):

View File

@ -161,6 +161,34 @@ class PlayerInterfaceTest(unittest.TestCase):
self.mpris.Pause()
self.assertEquals(self.backend.playback.state.get(), PAUSED)
def test_playpause_when_playing_should_pause_playback(self):
self.backend.current_playlist.append([Track(uri='a'), Track(uri='b')])
self.backend.playback.play()
self.assertEquals(self.backend.playback.state.get(), PLAYING)
self.mpris.PlayPause()
self.assertEquals(self.backend.playback.state.get(), PAUSED)
def test_playpause_when_paused_should_resume_playback(self):
self.backend.current_playlist.append([Track(uri='a'), Track(uri='b')])
self.backend.playback.play()
self.backend.playback.pause()
self.assertEquals(self.backend.playback.state.get(), PAUSED)
at_pause = self.backend.playback.time_position.get()
self.assert_(at_pause >= 0)
self.mpris.PlayPause()
self.assertEquals(self.backend.playback.state.get(), PLAYING)
after_pause = self.backend.playback.time_position.get()
self.assert_(after_pause >= at_pause)
def test_playpause_when_stopped_should_start_playback(self):
self.backend.current_playlist.append([Track(uri='a'), Track(uri='b')])
self.assertEquals(self.backend.playback.state.get(), STOPPED)
self.mpris.PlayPause()
self.assertEquals(self.backend.playback.state.get(), PLAYING)
def test_play_after_pause_resumes_from_same_position(self):
self.backend.current_playlist.append([Track(uri='a', length=40000)])
self.backend.playback.play()