lib: Create a fake module for FakeTracks

And anything else that needs it. This lets us define all the fields
expected by other parts of the Emmental system without needed to read a
track file.

I also switch over the test_tag.py and test_tagstore.py files while I'm
at it.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-07-08 16:45:15 -04:00
parent c3cb3b9847
commit 3f0fce8c53
3 changed files with 53 additions and 44 deletions

14
lib/fake.py Normal file
View File

@ -0,0 +1,14 @@
# Copyright 2021 (c) Anna Schumaker.
tracks = { }
class FakeTrack:
def __init__(self, n):
self.trackid = n
def __int__(self):
return self.trackid
def Track(n):
return tracks.setdefault(n, FakeTrack(n))

View File

@ -1,14 +1,11 @@
# Copyright 2021 (c) Anna Schumaker.
from . import publisher
from . import tag
from . import fake
import random
import threading
import unittest
class FakeTrack:
def __init__(self, trackid):
self.trackid = trackid
class TestTag(unittest.TestCase):
def setUp(self):
@ -37,7 +34,7 @@ class TestTag(unittest.TestCase):
def test_tag_len(self):
t = tag.Tag("Test")
self.assertEqual(len(t), 0)
t.tracks = [ FakeTrack(i) for i in range(5) ]
t.tracks = [ fake.Track(i) for i in range(5) ]
self.assertEqual(len(t), 5)
def test_tag_lt(self):
@ -61,7 +58,7 @@ class TestTag(unittest.TestCase):
def test_tag_state(self):
t = tag.Tag("test")
tracks = [ FakeTrack(i) for i in range(5) ]
tracks = [ fake.Track(i) for i in range(5) ]
t.tracks = tracks
state = t.__getstate__()
@ -98,13 +95,13 @@ class TestTag(unittest.TestCase):
t = tag.Tag("test")
t.TrackAdded.register(self.callback_func)
t.add_track(1)
self.assertEqual(t.tracks, [ 1 ])
self.assertEqual(self.changed, (t, 1, 0))
t.add_track(fake.Track(1))
self.assertEqual(t.tracks, [ fake.Track(1) ])
self.assertEqual(self.changed, (t, fake.Track(1), 0))
t.add_track(2)
self.assertEqual(t.tracks, [ 1, 2 ])
self.assertEqual(self.changed, (t, 2, 1))
t.add_track(fake.Track(2))
self.assertEqual(t.tracks, [ fake.Track(1), fake.Track(2) ])
self.assertEqual(self.changed, (t, fake.Track(2), 1))
def test_tag_remove_track(self):
t = tag.Tag("test")
@ -184,7 +181,7 @@ class TestSuperTag(unittest.TestCase):
def test_super_tag(self):
parent = tag.Tag("parent")
st = tag.SuperTag(parent, "test", "sort")
st.tracks = [ FakeTrack(i) for i in range(5) ]
st.tracks = [ fake.Track(i) for i in range(5) ]
self.assertIsInstance(st, tag.Tag)
self.assertEqual(st.parent, parent)

View File

@ -1,14 +1,11 @@
# Copyright 2021 (c) Anna Schumaker.
from . import fake
from . import publisher
from . import tag
from . import tagstore
import threading
import unittest
class FakeTrack:
def __init__(self, trackid):
self.trackid = trackid
class TestTagStore(unittest.TestCase):
def setUp(self):
self.added = None
@ -32,21 +29,21 @@ class TestTagStore(unittest.TestCase):
store.Added.register(self.on_store_added)
store.Removed.register(self.on_store_removed)
tag = store.add("test", 1)
tag = store.add("test", fake.Track(1))
self.assertEqual(self.added, tag)
self.assertEqual(tag.tracks, [ 1 ])
self.assertEqual(tag.tracks, [ fake.Track(1) ])
self.added = None
self.assertEqual(store.add("test ", 2), tag)
self.assertEqual(tag.tracks, [ 1, 2 ])
self.assertEqual(store.add("test ", fake.Track(2)), tag)
self.assertEqual(tag.tracks, [ fake.Track(1), fake.Track(2) ])
self.assertIsNone(self.added)
store.remove(tag, 1)
self.assertEqual(tag.tracks, [ 2 ])
store.remove(tag, fake.Track(1))
self.assertEqual(tag.tracks, [ fake.Track(2) ])
self.assertIn("test", store.store.keys())
self.assertIsNone(self.removed)
store.remove(tag, 2)
store.remove(tag, fake.Track(2))
self.assertEqual(tag.tracks, [ ])
self.assertNotIn("test", store.store.keys())
self.assertEqual(self.removed, tag)
@ -56,8 +53,8 @@ class TestTagStore(unittest.TestCase):
tag = store.add("test")
self.assertEqual(tag.tracks, [ ])
tag.add_track(1)
tag.add_track(2)
tag.add_track(fake.Track(1))
tag.add_track(fake.Track(2))
store.remove(tag)
self.assertNotIn("test", store.store.keys())
@ -71,9 +68,9 @@ class TestTagStore(unittest.TestCase):
store = tagstore.TagStore()
self.assertEqual(len(store), 0)
tag1 = store.add("test1", 1)
tag2 = store.add("test2", 2)
tag3 = store.add("test3", 3)
tag1 = store.add("test1", fake.Track(1))
tag2 = store.add("test2", fake.Track(2))
tag3 = store.add("test3", fake.Track(3))
self.assertEqual(len(store), 3)
self.assertEqual( store["test1"], tag1)
@ -89,7 +86,7 @@ class TestTagStore(unittest.TestCase):
def test_tag_store_reset(self):
store = tagstore.TagStore()
tag = store.add("test", 1)
tag = store.add("test", fake.Track(1))
store.Added.register(self.on_store_added)
store.Removed.register(self.on_store_removed)
@ -100,8 +97,8 @@ class TestTagStore(unittest.TestCase):
def test_tag_store_state(self):
store = tagstore.TagStore()
track = FakeTrack(1)
tag = store.add("test", 1)
track = fake.Track(1)
tag = store.add("test", track)
state = store.__getstate__()
self.assertEqual(set(state.keys()), set([ "store" ]))
@ -123,14 +120,14 @@ class TestTagSuperStore(unittest.TestCase):
superstore = tagstore.TagSuperStore()
self.assertIsInstance(superstore, tagstore.TagStore)
parent = store.add("parent", 1)
supertag = superstore.add(parent, "test ", 1)
parent = store.add("parent", fake.Track(1))
supertag = superstore.add(parent, "test ", fake.Track(1))
self.assertIsInstance(supertag, tag.SuperTag)
self.assertEqual(supertag.name, "test")
self.assertEqual(supertag.tracks, [ 1 ])
self.assertEqual(supertag.tracks, [ fake.Track(1) ])
self.assertEqual(supertag.parent, parent)
superstore.remove(supertag, 1)
superstore.remove(supertag, fake.Track(1))
self.assertEqual(supertag.tracks, [ ])
self.assertNotIn("test", superstore.store.keys())
@ -138,11 +135,11 @@ class TestTagSuperStore(unittest.TestCase):
store = tagstore.TagStore()
superstore = tagstore.TagSuperStore()
parent1 = store.add("parent1", 1)
parent2 = store.add("parent2", 2)
tag1 = superstore.add(parent1, "test1", 1)
tag2 = superstore.add(parent1, "test2", 2)
tag3 = superstore.add(parent2, "test3", 3)
parent1 = store.add("parent1", fake.Track(1))
parent2 = store.add("parent2", fake.Track(2))
tag1 = superstore.add(parent1, "test1", fake.Track(1))
tag2 = superstore.add(parent1, "test2", fake.Track(2))
tag3 = superstore.add(parent2, "test3", fake.Track(3))
self.assertEqual(len(superstore), 3)
self.assertEqual( superstore[parent1, "test1"], tag1)
@ -161,9 +158,10 @@ class TestTagSuperStore(unittest.TestCase):
store = tagstore.TagStore()
superstore = tagstore.TagSuperStore()
track = FakeTrack(1)
parent = store.add("test", 1)
tag = superstore.add(parent, "test", 1)
track = fake.Track(1)
parent = store.add("test")
tag = superstore.add(parent, "test", track)
tag.tracks = [ 1 ]
self.assertEqual(superstore.init_track(parent, "test", track), tag)
self.assertEqual(tag.tracks, [ track ])