71 lines
3.1 KiB
Python
71 lines
3.1 KiB
Python
# Copyright 2019 (c) Anna Schumaker.
|
|
from . import notify
|
|
from . import tags
|
|
import unittest
|
|
|
|
album_info = {"album" : [ "Test Album" ], "albumartist" : [ "Test Artist" ],
|
|
"date" : [ "2019" ], "genre" : [ "Test" ], "tracktotal" : [ "1" ]}
|
|
|
|
class TestAlbumTag(unittest.TestCase):
|
|
def setUp(self):
|
|
notify.Notify.clear()
|
|
tags.tag_map.clear()
|
|
self.cb_album = None
|
|
|
|
def test_album_init_basic(self):
|
|
a = tags.Album(album_info)
|
|
self.assertIsInstance(a, tags.Tag)
|
|
self.assertEqual(a.album, "Test Album")
|
|
self.assertEqual(a.genre, "Test")
|
|
self.assertEqual(a.date, 2019)
|
|
self.assertEqual(a.tracktotal, 1)
|
|
self.assertEqual(a.albumartist, "Test Artist")
|
|
self.assertEqual(hash(a), hash(("Test Album", "Test Artist", 2019)))
|
|
|
|
def test_album_init_empty(self):
|
|
a = tags.Album({})
|
|
self.assertIsInstance(a, tags.Tag)
|
|
self.assertEqual(a.album, "Unknown Album")
|
|
self.assertEqual(a.genre, "Unknown")
|
|
self.assertEqual(a.date, 0)
|
|
self.assertEqual(a.tracktotal, 0)
|
|
self.assertEqual(a.albumartist, "Unknown Artist")
|
|
self.assertEqual(hash(a), hash(("Unknown Album", "Unknown Artist", 0)))
|
|
|
|
def test_album_init_artist(self):
|
|
test_info = {"albumartist" : [ "1" ], "album artist" : [ "2" ], "artist" : [ "3" ]}
|
|
self.assertEqual(tags.Album(test_info).albumartist, "1")
|
|
test_info.pop("albumartist")
|
|
self.assertEqual(tags.Album(test_info).albumartist, "2")
|
|
test_info.pop("album artist")
|
|
self.assertEqual(tags.Album(test_info).albumartist, "3")
|
|
test_info.pop("artist")
|
|
self.assertEqual(tags.Album(test_info).albumartist, "Unknown Artist")
|
|
|
|
def test_album_discno_detect(self):
|
|
self.assertEqual(tags.Album({"album" : [ "Test Album {Disc 1}" ]}).album, "Test Album")
|
|
self.assertEqual(tags.Album({"album" : [ "Test Album [Disk One]" ]}).album, "Test Album")
|
|
self.assertEqual(tags.Album({"album" : [ "Test Album (Disk Two)" ]}).album, "Test Album")
|
|
self.assertEqual(tags.Album({"album" : [ "Test Album - Disc Three)" ]}).album, "Test Album")
|
|
self.assertEqual(tags.Album({"album" : [ "Test Album;CD Four" ]}).album, "Test Album")
|
|
self.assertEqual(tags.Album({"album" : [ "Test Album;CdFive" ]}).album, "Test Album")
|
|
self.assertEqual(tags.Album({"album" : [ "Test Album CD 9/10" ]}).album, "Test Album")
|
|
self.assertEqual(tags.Album({"album" : [ "Disc One: Test Album" ]}).album, "Disc One: Test Album")
|
|
|
|
def on_new_album(self, album):
|
|
self.cb_album = album
|
|
|
|
def test_album_lookup(self):
|
|
notify.Notify.notify_me("new-album", self.on_new_album)
|
|
a = tags.Album.lookup(album_info)
|
|
self.assertIsNotNone(a)
|
|
self.assertIn(a, tags.tag_map.values())
|
|
self.assertEqual(a, self.cb_album)
|
|
|
|
self.cb_album = None
|
|
for i in range(10):
|
|
b = tags.Album.lookup(album_info)
|
|
self.assertEqual(a, b)
|
|
self.assertIsNone(self.cb_album)
|
|
self.assertEqual(len(tags.tag_map), 1)
|