From 1b075ac4a4154853ada060c59abdde157e65ae75 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 11 Jun 2011 00:07:18 +0200 Subject: [PATCH] Test and implement mpris.Position property --- mopidy/frontends/mpris.py | 6 ++++-- tests/frontends/mpris/player_interface_test.py | 13 +++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/mopidy/frontends/mpris.py b/mopidy/frontends/mpris.py index 1ac9f097..04aaeca5 100644 --- a/mopidy/frontends/mpris.py +++ b/mopidy/frontends/mpris.py @@ -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 diff --git a/tests/frontends/mpris/player_interface_test.py b/tests/frontends/mpris/player_interface_test.py index 5d84b6d8..817a5fbc 100644 --- a/tests/frontends/mpris/player_interface_test.py +++ b/tests/frontends/mpris/player_interface_test.py @@ -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)