Test and implement mpris.Shuffle property

This commit is contained in:
Stein Magnus Jodal 2011-06-10 20:42:34 +02:00
parent e1fc403435
commit 3df3527c73
2 changed files with 32 additions and 2 deletions

View File

@ -116,8 +116,7 @@ class MprisObject(dbus.service.Object):
'PlaybackStatus': (self.get_PlaybackStatus, None),
'LoopStatus': (self.get_LoopStatus, self.set_LoopStatus),
'Rate': (1.0, self.set_Rate),
# TODO Get/set backend.playback.random
'Shuffle': (False, None),
'Shuffle': (self.get_Shuffle, self.set_Shuffle),
# TODO Get meta data
'Metadata': ({
'mpris:trackid': '', # TODO Use (cpid, track.uri)
@ -351,3 +350,12 @@ class MprisObject(dbus.service.Object):
def set_Rate(self, value):
if value == 0:
self.Pause()
def get_Shuffle(self):
return self.backend.playback.shuffle.get()
def set_Shuffle(self, value):
if value:
self.backend.playback.shuffle = True
else:
self.backend.playback.shuffle = False

View File

@ -85,6 +85,28 @@ class PlayerInterfaceTest(unittest.TestCase):
self.mpris.Set(mpris.PLAYER_IFACE, 'Rate', 0)
self.assertEquals(self.backend.playback.state.get(), PAUSED)
def test_get_shuffle_returns_true_if_shuffle_is_active(self):
self.backend.playback.shuffle = True
result = self.mpris.Get(mpris.PLAYER_IFACE, 'Shuffle')
self.assertTrue(result)
def test_get_shuffle_returns_false_if_shuffle_is_inactive(self):
self.backend.playback.shuffle = False
result = self.mpris.Get(mpris.PLAYER_IFACE, 'Shuffle')
self.assertFalse(result)
def test_set_shuffle_to_true_activates_shuffle_mode(self):
self.backend.playback.shuffle = False
self.assertFalse(self.backend.playback.shuffle.get())
result = self.mpris.Set(mpris.PLAYER_IFACE, 'Shuffle', True)
self.assertTrue(self.backend.playback.shuffle.get())
def test_set_shuffle_to_false_deactivates_shuffle_mode(self):
self.backend.playback.shuffle = True
self.assertTrue(self.backend.playback.shuffle.get())
result = self.mpris.Set(mpris.PLAYER_IFACE, 'Shuffle', False)
self.assertFalse(self.backend.playback.shuffle.get())
def test_get_minimum_rate_is_one_or_less(self):
result = self.mpris.Get(mpris.PLAYER_IFACE, 'MinimumRate')
self.assert_(result <= 1.0)