emmental/curds/test_tags_track.py

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.lookup(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.lookup(os.path.join(test_tracks, "01 - Test Track.ogg"))
self.assertEqual(t, 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"])