Remove Track.id usage in Gstreamer backend

This commit is contained in:
Stein Magnus Jodal 2010-08-08 17:15:47 +02:00
parent 8c1e5d5c69
commit 22b6a3df8b
4 changed files with 23 additions and 55 deletions

View File

@ -173,7 +173,6 @@ def _convert_mpd_data(data, tracks, music_dir):
track_kwargs['uri'] = path_to_uri(music_dir, path) track_kwargs['uri'] = path_to_uri(music_dir, path)
track_kwargs['length'] = int(data.get('time', 0)) * 1000 track_kwargs['length'] = int(data.get('time', 0)) * 1000
track_kwargs['id'] = len(tracks)
track = Track(**track_kwargs) track = Track(**track_kwargs)
tracks.add(track) tracks.add(track)

View File

@ -65,22 +65,13 @@ class BaseCurrentPlaylistControllerTest(object):
cp_track = self.controller.cp_tracks[1] cp_track = self.controller.cp_tracks[1]
self.assertEqual(cp_track, self.controller.get(cpid=cp_track[0])) self.assertEqual(cp_track, self.controller.get(cpid=cp_track[0]))
@populate_playlist
def test_get_by_id(self):
cp_track = self.controller.cp_tracks[1]
self.assertEqual(cp_track, self.controller.get(id=cp_track[1].id))
@populate_playlist
def test_get_by_id_raises_error_for_invalid_id(self):
self.assertRaises(LookupError, lambda: self.controller.get(id=1337))
@populate_playlist @populate_playlist
def test_get_by_uri(self): def test_get_by_uri(self):
cp_track = self.controller.cp_tracks[1] cp_track = self.controller.cp_tracks[1]
self.assertEqual(cp_track, self.controller.get(uri=cp_track[1].uri)) self.assertEqual(cp_track, self.controller.get(uri=cp_track[1].uri))
@populate_playlist @populate_playlist
def test_get_by_uri_raises_error_for_invalid_id(self): def test_get_by_uri_raises_error_for_invalid_uri(self):
test = lambda: self.controller.get(uri='foobar') test = lambda: self.controller.get(uri='foobar')
self.assertRaises(LookupError, test) self.assertRaises(LookupError, test)
@ -106,28 +97,6 @@ class BaseCurrentPlaylistControllerTest(object):
self.controller.load(tracks) self.controller.load(tracks)
self.assertEqual(tracks, self.controller.tracks) self.assertEqual(tracks, self.controller.tracks)
def test_get_by_id_returns_unique_match(self):
track = Track(id=1)
self.controller.load([Track(id=13), track, Track(id=17)])
self.assertEqual(track, self.controller.get(id=1)[1])
def test_get_by_id_raises_error_if_multiple_matches(self):
track = Track(id=1)
self.controller.load([Track(id=13), track, track])
try:
self.controller.get(id=1)
self.fail(u'Should raise LookupError if multiple matches')
except LookupError as e:
self.assertEqual(u'"id=1" match multiple tracks', e[0])
def test_get_by_id_raises_error_if_no_match(self):
self.controller.playlist = Playlist(tracks=[Track(id=13), Track(id=17)])
try:
self.controller.get(id=1)
self.fail(u'Should raise LookupError if no match')
except LookupError as e:
self.assertEqual(u'"id=1" match no tracks', e[0])
def test_get_by_uri_returns_unique_match(self): def test_get_by_uri_returns_unique_match(self):
track = Track(uri='a') track = Track(uri='a')
self.controller.load([Track(uri='z'), track, Track(uri='y')]) self.controller.load([Track(uri='z'), track, Track(uri='y')])
@ -152,20 +121,20 @@ class BaseCurrentPlaylistControllerTest(object):
self.assertEqual(u'"uri=a" match no tracks', e[0]) self.assertEqual(u'"uri=a" match no tracks', e[0])
def test_get_by_multiple_criteria_returns_elements_matching_all(self): def test_get_by_multiple_criteria_returns_elements_matching_all(self):
track1 = Track(id=1, uri='a') track1 = Track(uri='a', name='x')
track2 = Track(id=1, uri='b') track2 = Track(uri='b', name='x')
track3 = Track(id=2, uri='b') track3 = Track(uri='b', name='y')
self.controller.load([track1, track2, track3]) self.controller.load([track1, track2, track3])
self.assertEqual(track1, self.controller.get(id=1, uri='a')[1]) self.assertEqual(track1, self.controller.get(uri='a', name='x')[1])
self.assertEqual(track2, self.controller.get(id=1, uri='b')[1]) self.assertEqual(track2, self.controller.get(uri='b', name='x')[1])
self.assertEqual(track3, self.controller.get(id=2, uri='b')[1]) self.assertEqual(track3, self.controller.get(uri='b', name='y')[1])
def test_get_by_criteria_that_is_not_present_in_all_elements(self): def test_get_by_criteria_that_is_not_present_in_all_elements(self):
track1 = Track(id=1) track1 = Track()
track2 = Track(uri='b') track2 = Track(uri='b')
track3 = Track(id=2) track3 = Track()
self.controller.load([track1, track2, track3]) self.controller.load([track1, track2, track3])
self.assertEqual(track1, self.controller.get(id=1)[1]) self.assertEqual(track2, self.controller.get(uri='b')[1])
@populate_playlist @populate_playlist
def test_load_replaces_playlist(self): def test_load_replaces_playlist(self):
@ -244,18 +213,18 @@ class BaseCurrentPlaylistControllerTest(object):
track1 = self.controller.tracks[1] track1 = self.controller.tracks[1]
track2 = self.controller.tracks[2] track2 = self.controller.tracks[2]
version = self.controller.version version = self.controller.version
self.controller.remove(id=track1.id) self.controller.remove(uri=track1.uri)
self.assert_(version < self.controller.version) self.assert_(version < self.controller.version)
self.assert_(track1 not in self.controller.tracks) self.assert_(track1 not in self.controller.tracks)
self.assertEqual(track2, self.controller.tracks[1]) self.assertEqual(track2, self.controller.tracks[1])
@populate_playlist @populate_playlist
def test_removing_track_that_does_not_exist(self): def test_removing_track_that_does_not_exist(self):
test = lambda: self.controller.remove(id=12345) test = lambda: self.controller.remove(uri='/nonexistant')
self.assertRaises(LookupError, test) self.assertRaises(LookupError, test)
def test_removing_from_empty_playlist(self): def test_removing_from_empty_playlist(self):
test = lambda: self.controller.remove(id=12345) test = lambda: self.controller.remove(uri='/nonexistant')
self.assertRaises(LookupError, test) self.assertRaises(LookupError, test)
@populate_playlist @populate_playlist
@ -1025,7 +994,7 @@ class BaseStoredPlaylistsControllerTest(object):
except LookupError as e: except LookupError as e:
self.assertEqual(u'"name=b" match multiple playlists', e[0]) self.assertEqual(u'"name=b" match multiple playlists', e[0])
def test_get_by_id_raises_keyerror_if_no_match(self): def test_get_by_name_raises_keyerror_if_no_match(self):
self.stored.playlists = [Playlist(name='a'), Playlist(name='b')] self.stored.playlists = [Playlist(name='a'), Playlist(name='b')]
try: try:
self.stored.get(name='c') self.stored.get(name='c')
@ -1080,10 +1049,10 @@ class BaseLibraryControllerTest(object):
Album(name='album2', artists=artists[1:2]), Album(name='album2', artists=artists[1:2]),
Album()] Album()]
tracks = [Track(name='track1', length=4000, artists=artists[:1], tracks = [Track(name='track1', length=4000, artists=artists[:1],
album=albums[0], uri='file://' + data_folder('uri1'), id=0), album=albums[0], uri='file://' + data_folder('uri1')),
Track(name='track2', length=4000, artists=artists[1:2], Track(name='track2', length=4000, artists=artists[1:2],
album=albums[1], uri='file://' + data_folder('uri2'), id=1), album=albums[1], uri='file://' + data_folder('uri2')),
Track(id=3)] Track()]
def setUp(self): def setUp(self):
self.backend = self.backend_class(mixer=DummyMixer()) self.backend = self.backend_class(mixer=DummyMixer())

View File

@ -23,7 +23,7 @@ generate_song = lambda i: path_to_uri(song % i)
# FIXME can be switched to generic test # FIXME can be switched to generic test
class GStreamerCurrentPlaylistControllerTest(BaseCurrentPlaylistControllerTest, class GStreamerCurrentPlaylistControllerTest(BaseCurrentPlaylistControllerTest,
unittest.TestCase): unittest.TestCase):
tracks = [Track(uri=generate_song(i), id=i, length=4464) tracks = [Track(uri=generate_song(i), length=4464)
for i in range(1, 4)] for i in range(1, 4)]
backend_class = GStreamerBackend backend_class = GStreamerBackend
@ -31,7 +31,7 @@ class GStreamerCurrentPlaylistControllerTest(BaseCurrentPlaylistControllerTest,
class GStreamerPlaybackControllerTest(BasePlaybackControllerTest, class GStreamerPlaybackControllerTest(BasePlaybackControllerTest,
unittest.TestCase): unittest.TestCase):
tracks = [Track(uri=generate_song(i), id=i, length=4464) tracks = [Track(uri=generate_song(i), length=4464)
for i in range(1, 4)] for i in range(1, 4)]
backend_class = GStreamerBackend backend_class = GStreamerBackend
@ -42,7 +42,7 @@ class GStreamerPlaybackControllerTest(BasePlaybackControllerTest,
def add_track(self, path): def add_track(self, path):
uri = path_to_uri(data_folder(path)) uri = path_to_uri(data_folder(path))
track = Track(uri=uri, id=1, length=4464) track = Track(uri=uri, length=4464)
self.backend.current_playlist.add(track) self.backend.current_playlist.add(track)
def test_uri_handler(self): def test_uri_handler(self):

View File

@ -146,7 +146,7 @@ expected_tracks = []
def generate_track(path, ident): def generate_track(path, ident):
uri = path_to_uri(data_folder(path)) uri = path_to_uri(data_folder(path))
track = Track(name='trackname', artists=expected_artists, track_no=1, track = Track(name='trackname', artists=expected_artists, track_no=1,
album=expected_albums[0], length=4000, uri=uri, id=ident) album=expected_albums[0], length=4000, uri=uri)
expected_tracks.append(track) expected_tracks.append(track)
generate_track('song1.mp3', 6) generate_track('song1.mp3', 6)
@ -170,7 +170,7 @@ class MPDTagCacheToTracksTest(unittest.TestCase):
data_folder('')) data_folder(''))
uri = path_to_uri(data_folder('song1.mp3')) uri = path_to_uri(data_folder('song1.mp3'))
track = Track(name='trackname', artists=expected_artists, track_no=1, track = Track(name='trackname', artists=expected_artists, track_no=1,
album=expected_albums[0], length=4000, uri=uri, id=0) album=expected_albums[0], length=4000, uri=uri)
self.assertEqual(set([track]), tracks) self.assertEqual(set([track]), tracks)
def test_advanced_cache(self): def test_advanced_cache(self):
@ -189,4 +189,4 @@ class MPDTagCacheToTracksTest(unittest.TestCase):
tracks = parse_mpd_tag_cache(data_folder('blank_tag_cache'), tracks = parse_mpd_tag_cache(data_folder('blank_tag_cache'),
data_folder('')) data_folder(''))
uri = path_to_uri(data_folder('song1.mp3')) uri = path_to_uri(data_folder('song1.mp3'))
self.assertEqual(set([Track(uri=uri, length=4000, id=0)]), tracks) self.assertEqual(set([Track(uri=uri, length=4000)]), tracks)