emmental/curds/test_tags_track.py

64 lines
3.1 KiB
Python

# Copyright 2019 (c) Anna Schumaker.
import os
import tags
import unittest
test_tracks = os.path.abspath("./trier/Test Album")
class TestTrackTag(unittest.TestCase):
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 test_track_add(self):
tags.tag_map.clear()
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())
for i in range(10):
u = tags.Track.add(os.path.join(test_tracks, "01 - Test Track.ogg"))
self.assertIsNone(u)
self.assertEqual(len(tags.tag_map), 2)