diff --git a/curds/test_track.py b/curds/test_track.py index 42a5d47..88a74d7 100644 --- a/curds/test_track.py +++ b/curds/test_track.py @@ -1,4 +1,5 @@ # Copyright 2019 (c) Anna Schumaker. +import mutagen import unittest import os import track @@ -19,6 +20,7 @@ class TestTrackClass(unittest.TestCase): self.assertEqual(t.album.date, 2019) self.assertEqual(t.album.genre, "Test") self.assertEqual(t.album.albumartist, "Test Artist") + self.assertEqual(len(track.tracklist), 0) def test_init_empty(self): p = [ test_tracks, "00 - Empty Track.ogg" ] @@ -33,6 +35,7 @@ class TestTrackClass(unittest.TestCase): self.assertEqual(t.album.date, 0) self.assertEqual(t.album.genre, "Unknown") self.assertEqual(t.album.albumartist, "Unknown Artist") + self.assertEqual(len(track.tracklist), 0) def test_init_discno_detect(self): join = os.path.join @@ -46,5 +49,21 @@ class TestTrackClass(unittest.TestCase): self.assertEqual(track.Track(join(test_tracks, "09 - Test {Disc 02}.ogg")).discnumber, 2) self.assertEqual(track.Track(join(test_tracks, "10 - Test {Disc 20}.ogg")).discnumber, 20) + def test_track_add(self): + t = track.add(os.path.join(test_tracks, "01 - Test Track.ogg")) + self.assertIsNotNone(t) + self.assertEqual(len(track.tracklist), 1) + self.assertIn(t, track.tracklist) + + self.assertIsNone(track.add(os.path.join(test_tracks, "01 - Test Track.ogg"))) + self.assertEqual(len(track.tracklist), 1) + self.assertIsNone(track.add("99 - No Such Track.ogg")) + self.assertEqual(len(track.tracklist), 1) + + u = track.add(os.path.join(test_tracks, "02 - Test {Disc 2}.ogg")) + self.assertIsNotNone(u) + self.assertEqual(len(track.tracklist), 2) + self.assertIn(u, track.tracklist) + if __name__ == '__main--': unittest.main() diff --git a/curds/track.py b/curds/track.py index 6ee5e27..7006890 100644 --- a/curds/track.py +++ b/curds/track.py @@ -5,6 +5,7 @@ import os import re discno_map = { "one" : "1", "two" : "2", "three" : "3", "four" : "4", "five" : "5" } +tracklist = [ ] class Track: def __init__(self, path): @@ -23,3 +24,13 @@ class Track: match = re.search("([1-9][0-9]*)|one|two|three|four|five", discno.lower()) if match: self.discnumber = int(discno_map.get(match.group(), match.group())) + + +def add(path): + try: + if not any(t.path == path for t in tracklist): + track = Track(path) + tracklist.append(track) + return track + except mutagen.MutagenError: + return None