def test_tied_tags(s): songs = [Fakesong({"artist": "a", "title": "c"}), Fakesong({"artist": "a", "dummy": "d\ne"})] album = Album(songs[0]) album.songs = set(songs) s.failUnlessEqual(album.comma("~artist~dummy"), "a - e, d")
def test_people_sort(s): songs = [Fakesong({"albumartist": "aa", "artist": "b\na"}), Fakesong({"albumartist": "aa", "artist": "a\na"})] album = Album(songs[0]) album.songs = set(songs) s.failUnlessEqual(album.comma("~people"), "aa, a, b")
def test_single_rating(s): songs = [Fakesong({"~#rating": 0.75})] album = Album(songs[0]) album.songs = set(songs) # One song should average to its own rating s.failUnlessEqual(album.get("~#rating:avg"), songs[0]("~#rating")) # BAV should now be default for rating s.failUnlessEqual(album.get("~#rating:bav"), album.get("~#rating:avg"))
def test_numeric_comma(self): songs = [Fakesong({"~#added": long(1), "~#rating": 0.5, "~#bitrate": 42, "~#length": 1})] album = Album(songs[0]) album.songs = set(songs) self.assertEqual(album.comma("~#added"), 1) self.assertEqual(album.comma("~#rating"), 0.5) self.assertEqual(album.comma("~#bitrate"), 42)
def test_multiple_ratings(s): r1, r2 = 1.0, 0.5 songs = [Fakesong({"~#rating": r1}), Fakesong({"~#rating": r2})] album = Album(songs[0]) album.songs = set(songs) # Standard averaging still available s.failUnlessEqual(album("~#rating:avg"), avg([r1, r2])) # C = 0.0 => emulate arithmetic mean config.set("settings", "bayesian_rating_factor", 0.0) s.failUnlessEqual(album("~#rating:bav"), album("~#rating:avg"))
def test_numeric_funcs_text(self): songs = NUMERIC_SONGS album = Album(songs[0]) album.songs = set(songs) self.assertEqual(album("~length:sum"), "0:12") self.assertEqual(album("~length:min"), "0:01") self.assertEqual(album("~long-length:min"), "1 second") self.assertEqual(album("~tracks:min"), "6 tracks") self.assertEqual(album("~discs:min"), "2 discs") self.assertEqual(album("~rating:min"), format_rating(0.1)) self.assertEqual(album("~filesize:min"), "0 B")
def test_bayesian_multiple_ratings(s): # separated from above to avoid caching c, r1, r2 = 5, 1.0, 0.5 songs = [Fakesong({"~#rating": r1}), Fakesong({"~#rating": r2})] album = Album(songs[0]) album.songs = set(songs) config.set("settings", "bayesian_rating_factor", float(c)) s.failUnlessEqual(config.getfloat("settings", "bayesian_rating_factor"), float(c)) expected = avg(c * [config.RATINGS.default] + [r1, r2]) s.failUnlessEqual(album("~#rating:bav"), expected) s.failUnlessEqual(album("~#rating"), expected)
def test_internal_tags(s): songs = [ Fakesong({"~#length": 5, "discnumber": "1", "date": "2038"}), Fakesong({"~#length": 7, "dummy": "d\ne", "discnumber": "2"}) ] album = Album(songs[0]) album.songs = set(songs) s.failIfEqual(album.comma("~long-length"), "") s.failIfEqual(album.comma("~tracks"), "") s.failIfEqual(album.comma("~discs"), "") s.failUnlessEqual(album.comma("~foo"), "") s.failUnlessEqual(album.comma(""), "") s.failUnlessEqual(album.comma("~"), "") s.failUnlessEqual(album.get("~#"), "")
def test_methods(s): songs = [ Fakesong({"b": "bb4\nbb1\nbb1", "c": "cc1\ncc3\ncc3"}), Fakesong({"b": "bb1\nbb1\nbb4", "c": "cc3\ncc1\ncc3"}) ] album = Album(songs[0]) album.songs = set(songs) s.failUnlessEqual(album.list("c"), ["cc3", "cc1"]) s.failUnlessEqual(album.list("~c~b"), ["cc3", "cc1", "bb1", "bb4"]) s.failUnlessEqual(album.comma("c"), "cc3, cc1") s.failUnlessEqual(album.comma("~c~b"), "cc3, cc1 - bb1, bb4")
def test_tied_num_tags(s): songs = [ Fakesong({"~#length": 5, "title": "c", "~#rating": 0.4}), Fakesong({"~#length": 7, "dummy": "d\ne", "~#rating": 0.6}), Fakesong({"~#length": 0, "dummy2": 5, "~#rating": 0.5}) ] album = Album(songs[0]) album.songs = set(songs) s.failUnlessEqual(album.comma("~foo~~s~~~"), "") s.failUnlessEqual(album.comma("~#length~dummy"), "12 - e, d") s.failUnlessEqual(album.comma("~#rating~dummy"), "0.50 - e, d") s.failUnlessEqual(album.comma("~#length:sum~dummy"), "12 - e, d") s.failUnlessEqual(album.comma("~#dummy2"), 5) s.failUnlessEqual(album.comma("~#dummy3"), "")
# -*- coding: utf-8 -*- from quodlibet.util.collection import Album from quodlibet.formats import AudioFile from quodlibet import config from tests.plugin import PluginTestCase from quodlibet.util.dprint import print_d A1S1 = AudioFile( {"album": "greatness", "title": "excellent", "artist": "fooman", "~#lastplayed": 1234, "~#rating": 0.75} ) A1S2 = AudioFile( {"album": "greatness", "title": "superlative", "artist": "fooman", "~#lastplayed": 1234, "~#rating": 1.0} ) A1 = Album(A1S1) A1.songs = {A1S1, A1S2} A2S1 = AudioFile({"album": "mediocrity", "title": "blah", "artist": "fooman", "~#lastplayed": 1234}) A2S2 = AudioFile({"album": "mediocrity", "title": "meh", "artist": "fooman", "~#lastplayed": 1234}) A2 = Album(A2S1) A2.songs = {A2S1, A2S2} A3S1 = AudioFile( {"album": "disappointment", "title": "shameful", "artist": "poorman", "~#lastplayed": 2345, "~#rating": 0.25} ) A3S2 = AudioFile( {"album": "disappointment", "title": "zero", "artist": "poorman", "~#lastplayed": 2345, "~#rating": 0.0} ) A3S3 = AudioFile({"album": "disappointment", "title": "lame", "artist": "poorman", "~#lastplayed": 0, "~#rating": 0.25}) A3 = Album(A3S1) A3.songs = {A3S1, A3S2, A3S3}
def test_numeric_ops(s): songs = NUMERIC_SONGS album = Album(songs[0]) album.songs = set(songs) s.failUnlessEqual(album.get("~#length"), 12) s.failUnlessEqual(album.get("~#length:sum"), 12) s.failUnlessEqual(album.get("~#length:max"), 7) s.failUnlessEqual(album.get("~#length:min"), 1) s.failUnlessEqual(album.get("~#length:avg"), 4) s.failUnlessEqual(album.get("~#length:foo"), 0) s.failUnlessEqual(album.get("~#added"), 7) s.failUnlessEqual(album.get("~#lastplayed"), 88) s.failUnlessEqual(album.get("~#bitrate"), 200) s.failUnlessEqual(album.get("~#year"), 33) s.failUnlessEqual(album.get("~#rating"), 0.3) s.failUnlessEqual(album.get("~#originalyear"), 2002)
def test_numeric_ops(s): songs = [ Fakesong({"~#length": 4, "~#added": 5, "~#lastplayed": 1, "~#bitrate": 200, "date": "100", "~#rating": 0.1, "originaldate": "2004-01-01"}), Fakesong({"~#length": 7, "~#added": 7, "~#lastplayed": 88, "~#bitrate": 220, "date": "99", "~#rating": 0.3, "originaldate": "2002-01-01"}), Fakesong({"~#length": 1, "~#added": 3, "~#lastplayed": 43, "~#bitrate": 60, "date": "33", "~#rating": 0.5}) ] album = Album(songs[0]) album.songs = set(songs) s.failUnlessEqual(album.get("~#length"), 12) s.failUnlessEqual(album.get("~#length:sum"), 12) s.failUnlessEqual(album.get("~#length:max"), 7) s.failUnlessEqual(album.get("~#length:min"), 1) s.failUnlessEqual(album.get("~#length:avg"), 4) s.failUnlessEqual(album.get("~#length:foo"), 0) s.failUnlessEqual(album.get("~#added"), 7) s.failUnlessEqual(album.get("~#lastplayed"), 88) s.failUnlessEqual(album.get("~#bitrate"), 200) s.failUnlessEqual(album.get("~#year"), 33) s.failUnlessEqual(album.get("~#rating"), 0.3) s.failUnlessEqual(album.get("~#originalyear"), 2002)
# -*- coding: utf-8 -*- from quodlibet.util.collection import Album from quodlibet.formats._audio import AudioFile from quodlibet import config from tests.plugin import PluginTestCase from quodlibet.util.dprint import print_d A1S1 = AudioFile( {'album': 'greatness', 'title': 'excellent', 'artist': 'fooman', '~#lastplayed': 1234, '~#rating': 0.75}) A1S2 = AudioFile( {'album': 'greatness', 'title': 'superlative', 'artist': 'fooman', '~#lastplayed': 1234, '~#rating': 1.0}) A1 = Album(A1S1) A1.songs = set([A1S1, A1S2]) A2S1 = AudioFile({'album': 'mediocrity', 'title': 'blah', 'artist': 'fooman', '~#lastplayed': 1234}) A2S2 = AudioFile({'album': 'mediocrity', 'title': 'meh', 'artist': 'fooman', '~#lastplayed': 1234}) A2 = Album(A2S1) A2.songs = set([A2S1, A2S2]) A3S1 = AudioFile( {'album': 'disappointment', 'title': 'shameful', 'artist': 'poorman', '~#lastplayed': 2345, '~#rating': 0.25}) A3S2 = AudioFile( {'album': 'disappointment', 'title': 'zero', 'artist': 'poorman', '~#lastplayed': 2345, '~#rating': 0.0}) A3S3 = AudioFile( {'album': 'disappointment', 'title': 'lame', 'artist': 'poorman',
A1S1 = AudioFile({ 'album': 'greatness', 'title': 'excellent', 'artist': 'fooman', '~#lastplayed': 1234, '~#rating': 0.75 }) A1S2 = AudioFile({ 'album': 'greatness', 'title': 'superlative', 'artist': 'fooman', '~#lastplayed': 1234, '~#rating': 1.0 }) A1 = Album(A1S1) A1.songs = {A1S1, A1S2} A2S1 = AudioFile({ 'album': 'mediocrity', 'title': 'blah', 'artist': 'fooman', '~#lastplayed': 1234 }) A2S2 = AudioFile({ 'album': 'mediocrity', 'title': 'meh', 'artist': 'fooman', '~#lastplayed': 1234 }) A2 = Album(A2S1)