100 lines
3.6 KiB
Python
100 lines
3.6 KiB
Python
# Copyright 2021 (c) Anna Schumaker.
|
|
from lib import fake
|
|
from lib import tag
|
|
from lib import tagstore
|
|
from . import user
|
|
import unittest
|
|
|
|
class TestUserTags(unittest.TestCase):
|
|
def test_collection_tag(self):
|
|
c = user.CollectionTag()
|
|
self.assertIsInstance(c, tag.Tag)
|
|
self.assertTrue(c.loop)
|
|
self.assertFalse(c.can_loop())
|
|
|
|
def test_new_tracks_tag(self):
|
|
n = user.NewTracksTag()
|
|
self.assertIsInstance(n, tag.Tag)
|
|
self.assertTrue(n.can_loop())
|
|
self.assertTrue(n.can_random())
|
|
|
|
n.tracks = [ fake.Track(1), fake.Track(2), fake.Track(3) ]
|
|
state = n.__getstate__()
|
|
self.assertEqual(state["name"], "New Tracks")
|
|
self.assertEqual(state["sort"], "new tracks")
|
|
self.assertEqual(state["current"], -1)
|
|
self.assertEqual(state["tracks"], [ ])
|
|
self.assertFalse(state["loop"])
|
|
self.assertFalse(state["random"])
|
|
|
|
def test_previous_tag(self):
|
|
p = user.PreviousTag()
|
|
self.assertIsInstance(p, tag.Tag)
|
|
self.assertFalse(p.can_loop())
|
|
self.assertFalse(p.can_random())
|
|
|
|
p.add_track(fake.Track(1))
|
|
self.assertEqual(p.tracks, [ fake.Track(1) ])
|
|
self.assertIsNone(p.next())
|
|
|
|
p.add_track(fake.Track(2))
|
|
self.assertEqual(p.tracks, [ fake.Track(2), fake.Track(1) ])
|
|
self.assertEqual(p.next(), fake.Track(1))
|
|
|
|
p.add_track(fake.Track(3))
|
|
self.assertEqual(p.tracks, [ fake.Track(3), fake.Track(2), fake.Track(1) ])
|
|
self.assertEqual(p.next(), fake.Track(2))
|
|
self.assertEqual(p.next(), fake.Track(1))
|
|
|
|
state = p.__getstate__()
|
|
self.assertEqual(state["name"], "Previous")
|
|
self.assertEqual(state["sort"], "previous")
|
|
self.assertEqual(state["current"], 2)
|
|
self.assertEqual(state["tracks"], [ ])
|
|
self.assertFalse(state["loop"])
|
|
self.assertFalse(state["random"])
|
|
|
|
def test_up_next_tag(self):
|
|
u = user.UpNextTag()
|
|
self.assertIsInstance(u, tag.Tag)
|
|
self.assertFalse(u.loop)
|
|
self.assertFalse(u.can_loop())
|
|
self.assertIsNone(u.next())
|
|
|
|
u.tracks = [ fake.Track(1, u), fake.Track(2, u), fake.Track(3, u) ]
|
|
self.assertEqual(u.next(), fake.Track(1, u))
|
|
self.assertEqual(u.tracks, [ fake.Track(2, u), fake.Track(3, u) ])
|
|
|
|
self.assertEqual(u.next(), fake.Track(2, u))
|
|
self.assertEqual(u.tracks, [ fake.Track(3, u) ])
|
|
|
|
u.random = True
|
|
self.assertEqual(u.next(), fake.Track(3, u))
|
|
self.assertEqual(u.tracks, [ ])
|
|
self.assertFalse(u.random)
|
|
|
|
|
|
class TestUserTagStore(unittest.TestCase):
|
|
def test_user_init(self):
|
|
store = user.UserTagStore()
|
|
self.assertIsInstance(store, tagstore.TagStore)
|
|
|
|
self.assertIsInstance(store["Collection"], user.CollectionTag)
|
|
self.assertIsInstance(store["New Tracks"], user.NewTracksTag)
|
|
self.assertIsInstance(store["Previous"], user.PreviousTag)
|
|
self.assertIsInstance(store["Favorites"], tag.Tag)
|
|
self.assertIsInstance(store["Up Next"], user.UpNextTag)
|
|
|
|
def test_user_reset(self):
|
|
store = user.UserTagStore()
|
|
store.add("Playlist")
|
|
self.assertEqual(len(store), 6)
|
|
|
|
store.reset()
|
|
self.assertEqual(len(store), 5)
|
|
self.assertIsInstance(store["Collection"], user.CollectionTag)
|
|
self.assertIsInstance(store["New Tracks"], user.NewTracksTag)
|
|
self.assertIsInstance(store["Previous"], user.PreviousTag)
|
|
self.assertIsInstance(store["Favorites"], tag.Tag)
|
|
self.assertIsInstance(store["Up Next"], user.UpNextTag)
|