Test and implement mpris.CanGoPrevious property
This commit is contained in:
parent
4de7c242b7
commit
70139e0b7b
@ -149,8 +149,7 @@ class MprisObject(dbus.service.Object):
|
||||
'MaximumRate': (1.0, None),
|
||||
# TODO True if CanControl and backend.playback.track_at_next
|
||||
'CanGoNext': (False, None),
|
||||
# TODO True if CanControl and backend.playback.track_at_previous
|
||||
'CanGoPrevious': (False, None),
|
||||
'CanGoPrevious': (self.get_CanGoPrevious, None),
|
||||
'CanPlay': (self.get_CanPlay, None),
|
||||
'CanPause': (self.get_CanPause, None),
|
||||
'CanSeek': (self.get_CanSeek, None),
|
||||
@ -410,6 +409,12 @@ class MprisObject(dbus.service.Object):
|
||||
def get_Position(self):
|
||||
return self.backend.playback.time_position.get() * 1000
|
||||
|
||||
def get_CanGoPrevious(self):
|
||||
if not self.get_CanControl():
|
||||
return False
|
||||
return (self.backend.playback.cp_track_at_previous.get() !=
|
||||
self.backend.playback.current_cp_track.get())
|
||||
|
||||
def get_CanPlay(self):
|
||||
if not self.get_CanControl():
|
||||
return False
|
||||
|
||||
@ -177,6 +177,30 @@ class PlayerInterfaceTest(unittest.TestCase):
|
||||
result = self.mpris.Get(mpris.PLAYER_IFACE, 'MaximumRate')
|
||||
self.assert_(result >= 1.0)
|
||||
|
||||
def test_can_go_previous_is_true_if_can_control_and_other_previous_track(self):
|
||||
self.mpris.get_CanControl = lambda *_: True
|
||||
self.backend.current_playlist.append([Track(uri='a'), Track(uri='b')])
|
||||
self.backend.playback.play()
|
||||
self.backend.playback.next()
|
||||
result = self.mpris.Get(mpris.PLAYER_IFACE, 'CanGoPrevious')
|
||||
self.assertTrue(result)
|
||||
|
||||
def test_can_go_previous_is_false_if_previous_track_is_the_same(self):
|
||||
self.mpris.get_CanControl = lambda *_: True
|
||||
self.backend.current_playlist.append([Track(uri='a')])
|
||||
self.backend.playback.repeat = True
|
||||
self.backend.playback.play()
|
||||
result = self.mpris.Get(mpris.PLAYER_IFACE, 'CanGoPrevious')
|
||||
self.assertFalse(result)
|
||||
|
||||
def test_can_go_previous_is_false_if_can_control_is_false(self):
|
||||
self.mpris.get_CanControl = lambda *_: False
|
||||
self.backend.current_playlist.append([Track(uri='a'), Track(uri='b')])
|
||||
self.backend.playback.play()
|
||||
self.backend.playback.next()
|
||||
result = self.mpris.Get(mpris.PLAYER_IFACE, 'CanGoPrevious')
|
||||
self.assertFalse(result)
|
||||
|
||||
def test_can_play_is_true_if_can_control_and_current_track(self):
|
||||
self.mpris.get_CanControl = lambda *_: True
|
||||
self.backend.current_playlist.append([Track(uri='a')])
|
||||
|
||||
Loading…
Reference in New Issue
Block a user