diff --git a/curds/playlist/__init__.py b/curds/playlist/__init__.py index f11a543..96391a5 100644 --- a/curds/playlist/__init__.py +++ b/curds/playlist/__init__.py @@ -1 +1,12 @@ # Copyright 2019 (c) Anna Schumaker. +from . import library +import os + +plist_map = {"Library" : dict()} + +def lookup_library(path): + path = os.path.abspath(path) + plist = plist_map["Library"].get(path, None) + if plist != None: + return plist + return plist_map["Library"].setdefault(path, library.LibraryPlaylist(path)) diff --git a/curds/test_playlist.py b/curds/test_playlist.py new file mode 100644 index 0000000..2e01135 --- /dev/null +++ b/curds/test_playlist.py @@ -0,0 +1,34 @@ +# Copyright 2019 (c) Anna Schumaker. +from . import playlist +from . import threadqueue +import os +import unittest + +test_album = os.path.abspath("./trier/Test Album") +test_library = os.path.abspath("./trier/Test Library") + +class TestPlaylistManager(unittest.TestCase): + def setUpClass(): + if not playlist.library.library_thread.is_alive(): + playlist.library.library_thread = threadqueue.ThreadQueue() + + def tearDownClass(): + playlist.library.library_thread.stop() + + def test_playman_init(self): + self.assertIsInstance(playlist.plist_map, dict) + self.assertEqual(playlist.plist_map["Library"], {}) + self.assertTrue(playlist.library.library_thread.is_alive()) + + def test_playman_lookup_library(self): + plist = playlist.lookup_library(test_library + "/") + self.assertIsInstance(plist, playlist.library.LibraryPlaylist) + self.assertEqual(plist.name, test_library) + self.assertEqual(plist, playlist.plist_map["Library"][test_library]) + self.assertEqual(playlist.lookup_library(test_library), plist) + self.assertEqual(len(playlist.plist_map["Library"].values()), 1) + + alist = playlist.lookup_library(test_album) + self.assertIsInstance(alist, playlist.library.LibraryPlaylist) + self.assertIn(alist, playlist.plist_map["Library"].values()) + self.assertIn(plist, playlist.plist_map["Library"].values())