emmental/trackdb/test_track.py

133 lines
5.2 KiB
Python
Raw Normal View History

# Copyright 2020 (c) Anna Schumaker.
from lib import publisher
from . import library
from . import tags
from . import track
import datetime
import pathlib
import unittest
test_tracks = pathlib.Path("./trier/Test Album")
class TestTrack(unittest.TestCase):
def setUp(self):
self.count_updated = 0
self.lib = library.LibraryPath(test_tracks)
track.TrackUpdated.register(self.on_track_updated)
def tearDown(self):
track.reset()
def on_track_updated(self, path):
self.count_updated += 1
def test_track_init(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.trackid, 1)
self.assertEqual(trak.filepath(), test_tracks / "01 - Test Track.ogg")
self.assertIsInstance(track.TrackUpdated, publisher.Publisher)
def test_track_album(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
artist = trak.artist
self.assertEqual(trak.album, tags.Album[artist, "Test Album"])
self.assertEqual(trak["album"], "Test Album")
def test_track_artist(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.artist, tags.Artist["Test Artist"])
self.assertEqual(trak["artist"], "Test Artist")
trak2 = track.Track(2, test_tracks / "02 - Test {Disc 2}.ogg", self.lib)
self.assertEqual(trak2.artist, tags.Artist["Test Album Artist"])
def test_track_decade(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.decade(), 2010)
trak.year = 1974
self.assertEqual(trak.decade(), 1970)
def test_track_discnumber(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.discnumber, 1)
self.assertEqual(trak["discnumber"], "01")
def test_track_filepath(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.path, pathlib.Path("01 - Test Track.ogg"))
self.assertEqual(trak.filepath(), test_tracks / "01 - Test Track.ogg")
def test_track_genres(self):
trak = track.Track(1, test_tracks / "02 - Test {Disc 2}.ogg", self.lib)
self.assertEqual(trak.genre, [ "Test", "Genre", "List" ])
self.assertEqual(trak["genre"], "Test, Genre, List")
def test_track_length(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.length, 10)
self.assertEqual(trak["length"], "0:10")
trak.length = 61
self.assertEqual(trak["length"], "1:01")
trak.length = 3
self.assertEqual(trak["length"], "0:03")
def test_track_played(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
trak.playcount = 0
trak.lastplayed = None
self.assertEqual(trak["playcount"], "0")
self.assertEqual(trak["lastplayed"], "Never")
trak.played()
self.assertEqual(trak.playcount, 1)
self.assertEqual(trak.lastplayed, datetime.date.today())
self.assertEqual(trak["playcount"], "1")
self.assertEqual(trak["lastplayed"], str(datetime.date.today()))
self.assertEqual(self.count_updated, 1)
trak.played()
self.assertEqual(trak.playcount, 2)
self.assertEqual(trak["playcount"], "2")
self.assertEqual(self.count_updated, 2)
def test_track_title(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.title, "Test Track")
self.assertEqual(trak["title"], "Test Track")
def test_track_tracknumber(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.tracknumber, 1)
self.assertEqual(trak["tracknumber"], "01")
trak.tracknumber = 10
self.assertEqual(trak["tracknumber"], "10")
def test_track_year(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.year, 2019)
self.assertEqual(trak["year"], "2019")
trak2 = track.Track(2, test_tracks / "02 - Test {Disc 2}.ogg", self.lib)
self.assertEqual(trak2.year, 2019)
self.assertEqual(trak2["year"], "2019")
def test_track_state(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
state = trak.__getstate__()
self.assertEqual(state["artist"], "Test Artist")
self.assertEqual(state["album"], "Test Album")
tags.Artist["Test Artist"].tracks = [ 1 ]
tags.Album[trak.artist, "Test Album"].tracks = [ 1 ]
trak.artist = None
trak.album = None
trak.__setstate__(state)
self.assertEqual(trak.artist, tags.Artist["Test Artist"])
self.assertEqual(trak.album, tags.Album[trak.artist, "Test Album"])
self.assertEqual(tags.Artist["Test Artist"].tracks, [ trak ])
self.assertEqual(tags.Album[trak.artist, "Test Album"].tracks, [ trak ])
def test_track_reset(self):
track.TrackUpdated.register(1)
track.reset()
self.assertEqual(track.TrackUpdated.subscribers, set())