class TInformation(TestCase): def setUp(self): quodlibet.config.init() init_fake_app() self.inf = None self.library = SongLibrary() def tearDown(self): destroy_fake_app() self.library.destroy() quodlibet.config.quit() if self.inf: self.inf.destroy() def test_none(self): Information(self.library, []).destroy() def test_one(self): f = AF({"~filename": fsnative(u"/dev/null")}) self.inf = Information(self.library, [f]) self.assert_child_is(OneSong) def test_two(self): f = AF({"~filename": fsnative(u"/dev/null")}) f2 = AF({"~filename": fsnative(u"/dev/null2")}) self.inf = Information(self.library, [f, f2]) self.assert_child_is(ManySongs) def test_album(self): f = AF({"~filename": fsnative(u"/dev/null"), "album": "woo"}) f2 = AF({"~filename": fsnative(u"/dev/null2"), "album": "woo"}) self.inf = Information(self.library, [f, f2]) self.assert_child_is(OneAlbum) def test_album_special_chars(self): f = AF({"~filename": fsnative(u"/dev/null"), "album": "woo & hoo"}) f2 = AF({"~filename": fsnative(u"/dev/null2"), "album": "woo & hoo"}) self.inf = Information(self.library, [f, f2]) self.assert_child_is(OneAlbum) def test_artist(self): f = AF({"~filename": fsnative(u"/dev/null"), "artist": "woo"}) f2 = AF({"~filename": fsnative(u"/dev/null2"), "artist": "woo"}) self.inf = Information(self.library, [f, f2]) self.assert_child_is(OneArtist) def test_performer_roles(self): f = AF({"~filename": fsnative(u"/dev/null"), "performer:piano": "woo"}) self.inf = Information(self.library, [f]) self.assert_child_is(OneSong) def test_remove_song(self): f = AF({"~filename": fsnative(u"/dev/null"), "artist": "woo"}) f2 = AF({"~filename": fsnative(u"/dev/null2"), "artist": "woo"}) self.library.add([f, f2]) self.inf = Information(self.library, [f, f2]) self.library.remove([f]) def assert_child_is(self, cls): self.failUnless(isinstance(self.inf.get_child(), cls))
def setUp(self): config.init() config.set("browsers", "panes", "artist") library = SongLibrary() library.librarian = SongLibrarian() PanedBrowser.init(library) for af in SONGS: af.sanitize() library.add(SONGS) self.bar = self.Bar(library, False)
def setUp(self): config.init() config.set("browsers", "panes", "artist") library = SongLibrary() library.librarian = SongLibrarian() PanedBrowser.init(library) for af in SONGS: af.sanitize() library.add(SONGS) self.bar = self.Bar(library) self.last = None self.emit_count = 0 def selected_cb(browser, songs, *args): self.last = list(songs) self.emit_count += 1 self.bar.connect("songs-selected", selected_cb)
def test_save_restore(self): player = NullPlayer() lib = SongLibrary() lib.librarian = None lib.add([DUMMY_SONG]) try: os.unlink(QUEUE) except OSError: pass q = PlayQueue(lib, player) q.get_model().append(row=[DUMMY_SONG]) q.destroy() q = PlayQueue(lib, player) model = q.get_model() assert model.values()[0] is DUMMY_SONG
def setUp(self): config.init() library = SongLibrary() library.librarian = SongLibrarian() AlbumList.init(library) for af in SONGS: af.sanitize() library.add(SONGS) self.bar = AlbumList(library) self._id = self.bar.connect("songs-selected", self._selected) self._id2 = self.bar.connect("songs-activated", self._activated) with realized(self.bar): self.bar.filter_text("") self._wait() self.songs = [] self.activated = False
def setUp(self): config.init() library = SongLibrary() library.librarian = SongLibrarian() AlbumList.init(library) for af in SONGS: af.sanitize() library.add(SONGS) self.bar = AlbumList(library, True) w = gtk.Window() w.add(self.bar) w.show_all() w.hide() self.w = w self._id = self.bar.connect("songs-selected", self._selected) self._id2 = self.bar.connect("activated", self._activated) self.bar.filter_text("") self._wait() self.songs = [] self.activated = False
class Renamer(Gtk.EventBox): __gsignals__ = { 'changed': (GObject.SignalFlags.RUN_LAST, None, (object, )), } def __init__(self, *args, **kwargs): super().__init__() from quodlibet.library import SongLibrary self.library = SongLibrary() box = Gtk.EventBox() self.renamer = RenameFiles(self.library, box) box.add(self.renamer) self.renamer.test_mode = True def add_songs(self, songs): self.library.add(songs) def rename(self, pattern, songs): self.renamer.combo.get_child().set_text(pattern) self.renamer._preview(songs) self.renamer._rename(self.library)
class TSongsMenu(TestCase): def _confirmer(self, *args): self.confirmed = True return False def setUp(self): config.init() self.library = SongLibrary() backend = quodlibet.player.init_backend("nullbe") self.device = backend.init(self.library) self.songs = [AudioFile({"title": x}) for x in ["song1", "song2", "song3"]] for song in self.songs: song.sanitize(fsnative(text_type(song["title"]))) self.confirmed = False def test_empty(self): self.menu = self.empty_menu_with() self.failIf(len(self.menu)) def test_simple(self): self.menu = SongsMenu(self.library, self.songs, plugins=False) def test_playlists(self): self.menu = self.empty_menu_with(playlists=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = self.empty_menu_with(playlists=True) self.failUnlessEqual(len(self.menu), 1) self.failIf(self.menu.get_children()[0].props.sensitive) def test_queue(self): self.menu = self.empty_menu_with(queue=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = self.empty_menu_with(queue=True) self.failUnlessEqual(len(self.menu), 1) self.failIf(self.menu.get_children()[0].props.sensitive) def test_remove(self): self.menu = self.empty_menu_with(remove=True, removal_confirmer=self._confirmer) self.failUnlessEqual(len(self.menu), 1) item = self.menu.get_children()[0] self.failIf(item.props.sensitive) item.activate() self.failUnless(self.confirmed, "Should have confirmed song removal") def test_remove_sensitive(self): self.library.add(self.songs) self.menu = self.empty_menu_with(remove=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) def test_delete(self): self.menu = self.empty_menu_with(delete=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].is_file = False self.menu = self.empty_menu_with(delete=True) self.failIf(self.menu.get_children()[0].props.sensitive) def test_show_files(self): self.menu = self.empty_menu_with(show_files=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) item = self.menu.get_children()[0] self.failUnless(item.props.sensitive) def test_show_files_remote_songs(self): self.songs = self.library.songs = [RemoteFile("http://example.com/")] self.menu = self.empty_menu_with(show_files=True) self.failIf(len(self.menu)) def test_show_files_too_many_songs(self): self.songs = self.library.songs = [an_af(i) for i in range(50)] self.menu = self.empty_menu_with(show_files=True) item = self.menu.get_children()[0] self.failIf(item.props.sensitive, msg="Should have disabled show files for 50 files") def empty_menu_with(self, plugins=False, playlists=False, queue=False, remove=False, delete=False, edit=False, ratings=False, show_files=False, removal_confirmer=None): return SongsMenu(self.library, self.songs, plugins=plugins, playlists=playlists, queue=queue, remove=remove, delete=delete, edit=edit, ratings=ratings, show_files=show_files, removal_confirmer=removal_confirmer) def tearDown(self): self.device.destroy() self.library.destroy() try: self.menu.destroy() except AttributeError: pass else: del(self.menu) config.quit()
class TSongsMenu(TestCase): def setUp(self): config.init() self.library = SongLibrary() backend = quodlibet.player.init_backend("nullbe") self.device = backend.init(self.library) self.songs = [ AudioFile({"title": x}) for x in ["song1", "song2", "song3"] ] for song in self.songs: song.sanitize(fsnative(text_type(song["title"]))) def test_empty(self): self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=False, queue=False, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(0, len(self.menu)) def test_simple(self): self.menu = SongsMenu(self.library, self.songs, plugins=False) def test_playlists(self): self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=True, queue=False, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=True, queue=False, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def test_queue(self): self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=False, queue=True, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=False, queue=True, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def test_remove(self): self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=False, queue=False, remove=True, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def test_remove_sensitive(self): self.library.add(self.songs) self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=False, queue=False, remove=True, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) def test_delete(self): self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=False, queue=False, remove=False, delete=True, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].is_file = False self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=False, queue=False, remove=False, delete=True, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def tearDown(self): self.device.destroy() self.library.destroy() try: self.menu.destroy() except AttributeError: pass else: del (self.menu) config.quit()
class TSongsMenu(TestCase): def setUp(self): config.init() self.library = SongLibrary() backend = quodlibet.player.init_backend("nullbe") self.device = backend.init(self.library) self.songs = [AudioFile({"title": x}) for x in ["song1", "song2", "song3"]] for song in self.songs: song.sanitize(fsnative(text_type(song["title"]))) def test_empty(self): self.menu = SongsMenu(self.library, self.songs, plugins=False, playlists=False, queue=False, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(0, len(self.menu)) def test_simple(self): self.menu = SongsMenu(self.library, self.songs, plugins=False) def test_playlists(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=True, queue=False, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=True, queue=False, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def test_queue(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=True, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=True, remove=False, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def test_remove(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, remove=True, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def test_remove_sensitive(self): self.library.add(self.songs) self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, remove=True, delete=False, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) def test_delete(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, remove=False, delete=True, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].is_file = False self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, remove=False, delete=True, edit=False, ratings=False) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def tearDown(self): self.device.destroy() self.library.destroy() try: self.menu.destroy() except AttributeError: pass else: del(self.menu) config.quit()
class TSongsMenu(TestCase): def setUp(self): self.library = SongLibrary() quodlibet.player.init("nullbe") self.device = quodlibet.player.init_device(self.library) self.songs = [AudioFile({"title": x}) for x in ["song1", "song2", "song3"]] for song in self.songs: song.sanitize(song["title"]) def test_empty(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, devices=False, remove=False, delete=False, edit=False, ) self.failUnlessEqual(0, len(self.menu)) def test_simple(self): self.menu = SongsMenu(self.library, self.songs, plugins=False) def test_playlists(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=True, queue=False, devices=False, remove=False, delete=False, edit=False, ) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=True, queue=False, devices=False, remove=False, delete=False, edit=False, ) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def test_queue(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=True, devices=False, remove=False, delete=False, edit=False, ) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=True, devices=False, remove=False, delete=False, edit=False, ) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def test_devices(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, devices=True, remove=False, delete=False, edit=False, ) from quodlibet import browsers if browsers.media.MediaDevices in browsers.browsers: self.failUnlessEqual(1, len(self.menu)) else: self.failUnlessEqual(0, len(self.menu)) def test_remove(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, devices=False, remove=True, delete=False, edit=False, ) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def test_remove_sensitive(self): self.library.add(self.songs) self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, devices=False, remove=True, delete=False, edit=False, ) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) def test_delete(self): self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, devices=False, remove=False, delete=True, edit=False, ) self.failUnlessEqual(1, len(self.menu)) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].is_file = False self.menu = SongsMenu( self.library, self.songs, plugins=False, playlists=False, queue=False, devices=False, remove=False, delete=True, edit=False, ) self.failUnlessEqual(1, len(self.menu)) self.failIf(self.menu.get_children()[0].props.sensitive) def tearDown(self): quodlibet.player.quit(self.device) self.library.destroy() try: self.menu.destroy() except AttributeError: pass else: del (self.menu)
def setUp(self): l = SongLibrary() l.add(SONGS) l.albums.load() self.albums = l.albums
class TSongsMenu(TestCase): def _confirmer(self, *args): self.confirmed = True return False def setUp(self): config.init() self.library = SongLibrary() backend = quodlibet.player.init_backend("nullbe") self.device = backend.init(self.library) self.songs = [ AudioFile({"title": x}) for x in ["song1", "song2", "song3"] ] for song in self.songs: song.sanitize(fsnative(str(song["title"]))) self.confirmed = False def test_empty(self): self.menu = self.empty_menu_with() self.failIf(len(self.menu)) def test_simple(self): self.menu = SongsMenu(self.library, self.songs, plugins=False) def test_playlists(self): self.menu = self.empty_menu_with(playlists=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = self.empty_menu_with(playlists=True) self.failUnlessEqual(len(self.menu), 1) self.failIf(self.menu.get_children()[0].props.sensitive) def test_queue(self): self.menu = self.empty_menu_with(queue=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].can_add = False self.menu = self.empty_menu_with(queue=True) self.failUnlessEqual(len(self.menu), 1) self.failIf(self.menu.get_children()[0].props.sensitive) def test_remove(self): self.menu = self.empty_menu_with(remove=True, removal_confirmer=self._confirmer) self.failUnlessEqual(len(self.menu), 1) item = self.menu.get_children()[0] self.failIf(item.props.sensitive) item.activate() self.failUnless(self.confirmed, "Should have confirmed song removal") def test_remove_sensitive(self): self.library.add(self.songs) self.menu = self.empty_menu_with(remove=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) def test_delete(self): self.menu = self.empty_menu_with(delete=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) self.songs[0].is_file = False self.menu = self.empty_menu_with(delete=True) self.failIf(self.menu.get_children()[0].props.sensitive) def test_show_files(self): self.menu = self.empty_menu_with(show_files=True) self.failUnlessEqual(len(self.menu), 1) self.failUnless(self.menu.get_children()[0].props.sensitive) item = self.menu.get_children()[0] self.failUnless(item.props.sensitive) def test_show_files_remote_songs(self): self.songs = self.library.songs = [RemoteFile("http://example.com/")] self.menu = self.empty_menu_with(show_files=True) self.failIf(len(self.menu)) def test_show_files_too_many_songs(self): self.songs = self.library.songs = [an_af(i) for i in range(50)] self.menu = self.empty_menu_with(show_files=True) item = self.menu.get_children()[0] self.failIf(item.props.sensitive, msg="Should have disabled show files for 50 files") def empty_menu_with(self, plugins=False, playlists=False, queue=False, remove=False, delete=False, edit=False, ratings=False, show_files=False, removal_confirmer=None): return SongsMenu(self.library, self.songs, plugins=plugins, playlists=playlists, queue=queue, remove=remove, delete=delete, edit=edit, ratings=ratings, show_files=show_files, removal_confirmer=removal_confirmer) def tearDown(self): self.device.destroy() self.library.destroy() try: self.menu.destroy() except AttributeError: pass else: del (self.menu) config.quit()