91 lines
4.1 KiB
Python
91 lines
4.1 KiB
Python
# Copyright 2019 (c) Anna Schumaker.
|
|
from . import notify
|
|
from . import tags
|
|
import os
|
|
import unittest
|
|
|
|
test_tracks = os.path.abspath("./trier/Test Album")
|
|
|
|
class TestTrackTag(unittest.TestCase):
|
|
def setUp(self):
|
|
notify.Notify.clear()
|
|
tags.tag_map.clear()
|
|
self.cb_track = None
|
|
|
|
def test_track_init_basic(self):
|
|
p = [ test_tracks, "01 - Test Track.ogg" ]
|
|
t = tags.Track(os.path.join(*p))
|
|
self.assertIsInstance(t, tags.Tag)
|
|
self.assertEqual(t.path, os.path.join(*p))
|
|
self.assertEqual(t.title, "Test Track")
|
|
self.assertEqual(t.artist, "Test Artist")
|
|
self.assertEqual(t.tracknumber, 1)
|
|
self.assertEqual(t.discnumber, 1)
|
|
self.assertEqual(t.length, 10)
|
|
self.assertEqual(t.album.album, "Test Album")
|
|
self.assertEqual(t.album.date, 2019)
|
|
self.assertEqual(t.album.genre, "Test")
|
|
self.assertEqual(t.album.albumartist, "Test Artist")
|
|
self.assertEqual(hash(t), hash((hash(t.album), "Test Track", "Test Artist", 1, 1)))
|
|
|
|
def test_track_init_empty(self):
|
|
p = [ test_tracks, "00 - Empty Track.ogg" ]
|
|
t = tags.Track(os.path.join(*p))
|
|
self.assertIsInstance(t, tags.Tag)
|
|
self.assertEqual(t.path, os.path.join(*p))
|
|
self.assertEqual(t.title, "00 - Empty Track.ogg")
|
|
self.assertEqual(t.artist, "Unknown Artist")
|
|
self.assertEqual(t.tracknumber, 0)
|
|
self.assertEqual(t.length, 0)
|
|
self.assertEqual(t.discnumber, 1)
|
|
self.assertEqual(t.album.album, "Unknown Album")
|
|
self.assertEqual(t.album.date, 0)
|
|
self.assertEqual(t.album.genre, "Unknown")
|
|
self.assertEqual(t.album.albumartist, "Unknown Artist")
|
|
self.assertEqual(hash(t), hash((hash(t.album), "00 - Empty Track.ogg", "Unknown Artist", 0, 1)))
|
|
|
|
def test_track_discno_detect(self):
|
|
join = os.path.join
|
|
self.assertEqual(tags.Track(join(test_tracks, "02 - Test {Disc 2}.ogg")).discnumber, 2)
|
|
self.assertEqual(tags.Track(join(test_tracks, "03 - Test [Disk One].ogg")).discnumber, 1)
|
|
self.assertEqual(tags.Track(join(test_tracks, "04 - Test (Disc Two).ogg")).discnumber, 2)
|
|
self.assertEqual(tags.Track(join(test_tracks, "05 - Test - Disc Three.ogg")).discnumber, 3)
|
|
self.assertEqual(tags.Track(join(test_tracks, "06 - Test;CD Four.ogg")).discnumber, 4)
|
|
self.assertEqual(tags.Track(join(test_tracks, "07 - Test;CdFive.ogg")).discnumber, 5)
|
|
self.assertEqual(tags.Track(join(test_tracks, "08 - Test CD 6_10.ogg")).discnumber, 6)
|
|
self.assertEqual(tags.Track(join(test_tracks, "09 - Test {Disc 02}.ogg")).discnumber, 2)
|
|
self.assertEqual(tags.Track(join(test_tracks, "10 - Test {Disc 20}.ogg")).discnumber, 20)
|
|
|
|
def on_new_track(self, track):
|
|
self.cb_track = track
|
|
|
|
def test_track_add(self):
|
|
notify.Notify.notify_me("new-track", self.on_new_track)
|
|
t = tags.Track.add(os.path.join(test_tracks, "01 - Test Track.ogg"))
|
|
self.assertIsNotNone(t)
|
|
self.assertIn(t, tags.tag_map.values())
|
|
self.assertIn(t.album, tags.tag_map.values())
|
|
self.assertEqual(t, self.cb_track)
|
|
|
|
self.cb_track = None
|
|
for i in range(10):
|
|
u = tags.Track.add(os.path.join(test_tracks, "01 - Test Track.ogg"))
|
|
self.assertIsNone(u)
|
|
self.assertIsNone(self.cb_track)
|
|
self.assertEqual(len(tags.tag_map), 2)
|
|
|
|
def test_track_getitem(self):
|
|
p = [ test_tracks, "01 - Test Track.ogg" ]
|
|
t = tags.Track(os.path.join(*p))
|
|
self.assertEqual(t["path"], os.path.join(*p))
|
|
self.assertEqual(t["title"], "Test Track")
|
|
self.assertEqual(t["artist"], "Test Artist")
|
|
self.assertEqual(t["tracknumber"], 1)
|
|
self.assertEqual(t["discnumber"], 1)
|
|
self.assertEqual(t["length"], 10)
|
|
self.assertEqual(t["album"], "Test Album")
|
|
self.assertEqual(t["date"], 2019)
|
|
self.assertEqual(t["genre"], "Test")
|
|
self.assertEqual(t["albumartist"], "Test Artist")
|
|
self.assertIsNone(t["nokey"])
|