Test and implement mpris.Position property

This commit is contained in:
Stein Magnus Jodal 2011-06-11 00:07:18 +02:00
parent 84ac7b3e6a
commit 1b075ac4a4
2 changed files with 17 additions and 2 deletions

View File

@ -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

View File

@ -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)