emmental/lib/test_tagstore.py

59 lines
1.7 KiB
Python
Raw Normal View History

# Copyright 2021 (c) Anna Schumaker.
from . import publisher
from . import tagstore
import threading
import unittest
class TestTagStore(unittest.TestCase):
def setUp(self):
self.added = None
self.removed = None
def on_store_added(self, tag):
self.added = tag
def on_store_removed(self, tag):
self.removed = tag
def test_tag_store(self):
store = tagstore.TagStore()
self.assertEqual(store.store, { })
self.assertIsInstance(store.lock, type(threading.Lock()))
self.assertIsInstance(store.Added, publisher.Publisher)
self.assertIsInstance(store.Removed, publisher.Publisher)
def test_tag_store_add_remove(self):
store = tagstore.TagStore()
store.Added.register(self.on_store_added)
store.Removed.register(self.on_store_removed)
tag = store.add("test", 1)
self.assertEqual(self.added, tag)
self.assertEqual(tag.tracks, [ 1 ])
self.added = None
self.assertEqual(store.add("test ", 2), tag)
self.assertEqual(tag.tracks, [ 1, 2 ])
self.assertIsNone(self.added)
store.remove(tag, 1)
self.assertEqual(tag.tracks, [ 2 ])
self.assertIn("test", store.store.keys())
self.assertIsNone(self.removed)
store.remove(tag, 2)
self.assertEqual(tag.tracks, [ ])
self.assertNotIn("test", store.store.keys())
self.assertEqual(self.removed, tag)
def test_tag_store_add_remove_none(self):
store = tagstore.TagStore()
tag = store.add("test")
self.assertEqual(tag.tracks, [ ])
tag.add_track(1)
tag.add_track(2)
store.remove(tag)
self.assertNotIn("test", store.store.keys())