2021-06-21 12:36:46 -04:00
|
|
|
# Copyright 2021 (c) Anna Schumaker.
|
2021-06-28 11:12:14 -04:00
|
|
|
from . import publisher
|
2021-06-21 12:36:46 -04:00
|
|
|
from . import tag
|
2021-06-21 13:42:00 -04:00
|
|
|
import threading
|
2021-06-21 12:36:46 -04:00
|
|
|
import unittest
|
|
|
|
|
2021-06-23 11:08:35 -04:00
|
|
|
class FakeTrack:
|
|
|
|
def __init__(self, trackid):
|
|
|
|
self.trackid = trackid
|
|
|
|
|
|
|
|
|
2021-06-21 12:36:46 -04:00
|
|
|
class TestTag(unittest.TestCase):
|
2021-06-28 11:12:14 -04:00
|
|
|
def setUp(self):
|
|
|
|
self.changed = None
|
|
|
|
|
|
|
|
def callback_func(self, tag, track):
|
|
|
|
self.changed = (tag, track)
|
|
|
|
|
2021-06-21 12:36:46 -04:00
|
|
|
def test_tag_init(self):
|
|
|
|
t = tag.Tag("test")
|
|
|
|
self.assertEqual(t.name, "test")
|
|
|
|
self.assertEqual(t.tracks, [ ])
|
|
|
|
self.assertIsNone(t.widgets)
|
2021-06-21 13:42:00 -04:00
|
|
|
self.assertIsInstance(t.lock, type(threading.Lock()))
|
2021-06-28 11:12:14 -04:00
|
|
|
self.assertIsInstance(t.TrackAdded, publisher.Publisher)
|
|
|
|
self.assertIsInstance(t.TrackRemoved, publisher.Publisher)
|
2021-06-21 12:36:46 -04:00
|
|
|
|
2021-06-21 14:57:01 -04:00
|
|
|
self.assertEqual(str(t), "test")
|
|
|
|
|
2021-06-21 12:36:46 -04:00
|
|
|
def test_tag_len(self):
|
|
|
|
t = tag.Tag("Test")
|
|
|
|
self.assertEqual(len(t), 0)
|
2021-06-23 11:08:35 -04:00
|
|
|
t.tracks = [ FakeTrack(i) for i in range(5) ]
|
2021-06-21 12:36:46 -04:00
|
|
|
self.assertEqual(len(t), 5)
|
|
|
|
|
|
|
|
def test_tag_lt(self):
|
|
|
|
a = tag.Tag("A")
|
|
|
|
b = tag.Tag("B")
|
|
|
|
|
|
|
|
self.assertTrue( a < b)
|
|
|
|
self.assertFalse(b < a)
|
|
|
|
self.assertFalse(a < a)
|
|
|
|
|
2021-06-21 13:38:22 -04:00
|
|
|
def test_tag_state(self):
|
|
|
|
t = tag.Tag("test")
|
2021-06-23 11:08:35 -04:00
|
|
|
tracks = [ FakeTrack(i) for i in range(5) ]
|
|
|
|
t.tracks = tracks
|
2021-06-21 13:38:22 -04:00
|
|
|
|
|
|
|
state = t.__getstate__()
|
|
|
|
self.assertEqual(set(state.keys()), set([ "name", "tracks" ]))
|
|
|
|
self.assertEqual(state["name"], "test")
|
2021-06-23 11:08:35 -04:00
|
|
|
self.assertEqual(state["tracks"], [ 0, 1, 2, 3, 4 ])
|
2021-06-21 13:38:22 -04:00
|
|
|
|
|
|
|
t.__dict__.clear()
|
|
|
|
t.__setstate__(state)
|
|
|
|
self.assertEqual(t.name, "test")
|
2021-06-23 11:08:35 -04:00
|
|
|
self.assertEqual(t.tracks, [ 0, 1, 2, 3, 4 ])
|
2021-06-21 13:38:22 -04:00
|
|
|
self.assertEqual(t.widgets, None)
|
2021-06-21 13:42:00 -04:00
|
|
|
self.assertIsInstance(t.lock, type(threading.Lock()))
|
2021-06-28 11:12:14 -04:00
|
|
|
self.assertIsInstance(t.TrackAdded, publisher.Publisher)
|
|
|
|
self.assertIsInstance(t.TrackRemoved, publisher.Publisher)
|
2021-06-21 13:38:22 -04:00
|
|
|
|
2021-06-23 11:08:35 -04:00
|
|
|
for track in tracks:
|
|
|
|
t.init_track(track)
|
|
|
|
self.assertEqual(t.tracks, tracks)
|
|
|
|
|
2021-06-21 12:36:46 -04:00
|
|
|
def test_tag_add_track(self):
|
|
|
|
t = tag.Tag("test")
|
2021-06-28 11:12:14 -04:00
|
|
|
t.TrackAdded.register(self.callback_func)
|
|
|
|
|
2021-06-21 12:36:46 -04:00
|
|
|
t.add_track(1)
|
|
|
|
self.assertEqual(t.tracks, [ 1 ])
|
2021-06-28 11:12:14 -04:00
|
|
|
self.assertEqual(self.changed, (t, 1))
|
|
|
|
|
2021-06-21 12:36:46 -04:00
|
|
|
t.add_track(2)
|
|
|
|
self.assertEqual(t.tracks, [ 1, 2 ])
|
2021-06-28 11:12:14 -04:00
|
|
|
self.assertEqual(self.changed, (t, 2))
|
2021-06-21 12:36:46 -04:00
|
|
|
|
|
|
|
def test_tag_remove_track(self):
|
|
|
|
t = tag.Tag("test")
|
|
|
|
t.tracks = [ 1, 2 ]
|
2021-06-28 11:12:14 -04:00
|
|
|
t.TrackRemoved.register(self.callback_func)
|
2021-06-21 12:36:46 -04:00
|
|
|
|
|
|
|
t.remove_track(1)
|
|
|
|
self.assertEqual(t.tracks, [ 2 ])
|
2021-06-28 11:12:14 -04:00
|
|
|
self.assertEqual(self.changed, (t, 1))
|
|
|
|
|
2021-06-21 12:36:46 -04:00
|
|
|
t.remove_track(2)
|
|
|
|
self.assertEqual(t.tracks, [ ])
|
2021-06-28 11:12:14 -04:00
|
|
|
self.assertEqual(self.changed, (t, 2))
|