Remove Track.id usage in Gstreamer backend
This commit is contained in:
parent
8c1e5d5c69
commit
22b6a3df8b
@ -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)
|
||||||
|
|||||||
@ -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())
|
||||||
|
|||||||
@ -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):
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user