Test and implement mpris.Position property
This commit is contained in:
parent
84ac7b3e6a
commit
1b075ac4a4
@ -124,8 +124,7 @@ class MprisObject(dbus.service.Object):
|
||||
'mpris:trackid': '', # TODO Use (cpid, track.uri)
|
||||
}, None),
|
||||
'Volume': (self.get_Volume, self.set_Volume),
|
||||
# TODO Get backend.playback.time_position
|
||||
'Position': (0, None),
|
||||
'Position': (self.get_Position, None),
|
||||
'MinimumRate': (1.0, None),
|
||||
'MaximumRate': (1.0, None),
|
||||
# TODO True if CanControl and backend.playback.track_at_next
|
||||
@ -383,3 +382,6 @@ class MprisObject(dbus.service.Object):
|
||||
self.mixer.volume = 100
|
||||
elif 0 <= value <= 1:
|
||||
self.mixer.volume = int(value * 100)
|
||||
|
||||
def get_Position(self):
|
||||
return self.backend.playback.time_position.get() * 1000
|
||||
|
||||
@ -136,6 +136,19 @@ class PlayerInterfaceTest(unittest.TestCase):
|
||||
self.mpris.Set(mpris.PLAYER_IFACE, 'Volume', None)
|
||||
self.assertEquals(self.mixer.volume.get(), 10)
|
||||
|
||||
def test_get_position_returns_time_position_in_microseconds(self):
|
||||
self.backend.current_playlist.append([Track(uri='a', length=40000)])
|
||||
self.backend.playback.play()
|
||||
self.backend.playback.seek(10000)
|
||||
result_in_microseconds = self.mpris.Get(mpris.PLAYER_IFACE, 'Position')
|
||||
result_in_milliseconds = result_in_microseconds // 1000
|
||||
self.assert_(result_in_milliseconds >= 10000)
|
||||
|
||||
def test_get_position_when_no_current_track_should_be_zero(self):
|
||||
result_in_microseconds = self.mpris.Get(mpris.PLAYER_IFACE, 'Position')
|
||||
result_in_milliseconds = result_in_microseconds // 1000
|
||||
self.assertEquals(result_in_milliseconds, 0)
|
||||
|
||||
def test_get_minimum_rate_is_one_or_less(self):
|
||||
result = self.mpris.Get(mpris.PLAYER_IFACE, 'MinimumRate')
|
||||
self.assert_(result <= 1.0)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user