60 lines
2.3 KiB
Python
60 lines
2.3 KiB
Python
# Copyright 2019 (c) Anna Schumaker
|
|
import hashlib
|
|
from multiprocessing.pool import ThreadPool
|
|
import unittest
|
|
import album
|
|
|
|
album_info = {"album" : [ "Test Album" ], "albumartist" : [ "Test Artist" ],
|
|
"date" : [ "2019" ], "genre" : [ "Test" ], "tracktotal" : [ "1" ]}
|
|
|
|
class TestAlbumClass(unittest.TestCase):
|
|
def test_init_basic(self):
|
|
a = album.Album(album_info)
|
|
self.assertEqual(a.album, "Test Album")
|
|
self.assertEqual(a.genre, "Test")
|
|
self.assertEqual(a.date, 2019)
|
|
self.assertEqual(a.albumartist, "Test Artist")
|
|
self.assertEqual(a.tracktotal, 1)
|
|
self.assertEqual(a.hash(), hashlib.md5("Test AlbumTest Artist2019".encode('utf-8')).hexdigest())
|
|
|
|
def test_init_empty(self):
|
|
a = album.Album({})
|
|
self.assertEqual(a.album, "Unknown Album")
|
|
self.assertEqual(a.genre, "Unknown")
|
|
self.assertEqual(a.date, 0)
|
|
self.assertEqual(a.albumartist, "Unknown Artist")
|
|
self.assertEqual(a.tracktotal, 0)
|
|
self.assertEqual(a.hash(), hashlib.md5("Unknown AlbumUnknown Artist0".encode('utf-8')).hexdigest())
|
|
|
|
def test_init_artist_fallback(self):
|
|
test_info = {"albumartist" : [ "1" ], "album artist" : [ "2" ], "artist" : [ "3" ]}
|
|
self.assertEqual(album.Album(test_info).albumartist, "1")
|
|
test_info.pop("albumartist")
|
|
self.assertEqual(album.Album(test_info).albumartist, "2")
|
|
test_info.pop("album artist")
|
|
self.assertEqual(album.Album(test_info).albumartist, "3")
|
|
test_info.pop("artist")
|
|
self.assertEqual(album.Album(test_info).albumartist, "Unknown Artist")
|
|
|
|
def test_album_lookup(self):
|
|
album.album_map.clear()
|
|
a = album.lookup(album_info)
|
|
self.assertIsNotNone(a)
|
|
|
|
for i in range(10):
|
|
b = album.lookup(album_info)
|
|
self.assertEqual(a, b)
|
|
self.assertEqual(len(album.album_map), 1)
|
|
|
|
def test_parallel_lookup(self):
|
|
album.album_map.clear()
|
|
with ThreadPool(processes=5) as pool:
|
|
res = pool.map(album.lookup, [ album_info ] * 20)
|
|
self.assertIsNotNone(res[0])
|
|
self.assertEqual(res.count(res[0]), 20)
|
|
self.assertEqual(len(album.album_map), 1)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|