def test_people(self): q = AudioFile([("performer:vocals", "A"), ("performer:guitar", "B"), ("performer", "C"), ("arranger", "A"), ("albumartist", "B"), ("artist", "C")]) self.failUnlessEqual(q.list("~people"), ["C", "B", "A"]) self.failUnlessEqual(q.list("~people:roles"), ["C", "B (Guitar)", "A (Arrangement, Vocals)"])
def test_performers(self): q = AudioFile([("performer:vocals", "A"), ("performer:guitar", "B"), ("performer", "C")]) self.failUnless("A (Vocals)" in q.list("~performers")) self.failUnless("B (Guitar)" in q.list("~performers")) self.failUnless("C" in q.list("~performers")) self.failUnless("A (Vocals)" in q.list("~people")) self.failUnless("B (Guitar)" in q.list("~people")) self.failUnlessEqual(len(q.list("~performers")), 3)
def test_people_individuals(self): q = AudioFile({"artist": "A\nX", "albumartist": "Various Artists"}) self.failUnlessEqual(q.list("~people:real"), ["A", "X"]) lonely = AudioFile({"artist": "various artists", "title": "blah"}) self.failUnlessEqual(lonely.list("~people:real"), ["various artists"]) lots = AudioFile({"artist": "Various Artists", "albumartist": "V.A."}) self.failUnlessEqual(lots.list("~people:real"), ["Various Artists"])
def test_people_mix(self): q = AudioFile([ ("performer:arrangement", "A"), ("arranger", "A"), ("performer", "A"), ("performer:foo", "A"), ]) self.failUnlessEqual(q.list("~people"), ["A"]) self.failUnlessEqual(q.list("~people:roles"), ["A (Arrangement, Arrangement, Foo)"])
def test_people_multi_value(self): q = AudioFile([ ("arranger", "A\nX"), ("performer", "A\nY"), ("performer:foo", "A\nX"), ]) self.failUnlessEqual(q.list("~people"), ["A", "Y", "X"]) self.failUnlessEqual( q.list("~people:roles"), ["A (Arrangement, Foo)", "Y", "X (Arrangement, Foo)"])
def test_remove(self): song = AudioFile() song.add("foo", "bar") song.add("foo", "another") song.add("foo", "one more") song.remove("foo", "another") self.failUnlessEqual(song.list("foo"), ["bar", "one more"]) song.remove("foo", "bar") self.failUnlessEqual(song.list("foo"), ["one more"]) song.remove("foo", "one more") self.failIf("foo" in song)
def test_peoplesort(self): q = AudioFile([("performer:vocals", "The A"), ("performersort:vocals", "A, The"), ("performer:guitar", "The B"), ("performersort:guitar", "B, The"), ("performer", "The C"), ("performersort", "C, The"), ("albumartist", "The B"), ("albumartistsort", "B, The")]) self.failUnlessEqual(q.list("~peoplesort"), ["B, The", "C, The", "A, The"]) self.failUnlessEqual(q.list("~peoplesort:roles"), ["B, The (Guitar)", "C, The", "A, The (Vocals)"])
def test_add(self): song = AudioFile() self.failIf("foo" in song) song.add("foo", "bar") self.failUnlessEqual(song["foo"], "bar") song.add("foo", "another") self.failUnlessEqual(song.list("foo"), ["bar", "another"])
def test_performers_multi_value(self): q = AudioFile([ ("performer:vocals", "X\nA\nY"), ("performer:guitar", "Y\nB\nA"), ("performer", "C\nF\nB\nA"), ]) self.failUnlessEqual( set(q.list("~performer")), set(["A", "B", "C", "F", "X", "Y"])) self.failUnlessEqual( set(q.list("~performer:roles")), set([ "A (Guitar, Vocals)", "C", "B (Guitar)", "X (Vocals)", "Y (Guitar, Vocals)", "F", ]))
def test_change(self): song = AudioFile() song.add("foo", "bar") song.add("foo", "another") song.change("foo", "bar", "one more") self.failUnlessEqual(song.list("foo"), ["one more", "another"]) song.change("foo", "does not exist", "finally") self.failUnlessEqual(song["foo"], "finally") song.change("foo", "finally", "we're done") self.failUnlessEqual(song["foo"], "we're done")
def test_performers_multi_value(self): q = AudioFile([ ("performer:vocals", "X\nA\nY"), ("performer:guitar", "Y\nB\nA"), ("performer", "C\nF\nB\nA"), ]) self.failUnlessEqual(set(q.list("~performer")), set(["A", "B", "C", "F", "X", "Y"])) self.failUnlessEqual( set(q.list("~performer:roles")), set([ "A (Guitar, Vocals)", "C", "B (Guitar)", "X (Vocals)", "Y (Guitar, Vocals)", "F", ]))
def test_performers(self): q = AudioFile([("performer:vocals", "A"), ("performer:guitar", "B"), ("performer", "C")]) self.failUnlessEqual(set(q.list("~performers")), set(["A", "B", "C"])) self.failUnlessEqual(set(q.list("~performers:roles")), set(["A (Vocals)", "B (Guitar)", "C"]))
def test_remove_unknown(self): song = AudioFile() song.add("foo", "bar") song.remove("foo", "not in list") song.remove("nope") self.failUnlessEqual(song.list("foo"), ["bar"])