80 lines
2.8 KiB
Python
80 lines
2.8 KiB
Python
# Copyright 2019 (c) Anna Schumaker.
|
|
from . import playlist
|
|
from .. import notify
|
|
from .. import tags
|
|
import os
|
|
import unittest
|
|
|
|
test_library = os.path.abspath("./trier/Test Library")
|
|
|
|
class TestPlaylist(unittest.TestCase):
|
|
def setUp(self):
|
|
tags.tag_map.clear()
|
|
notify.Notify.clear()
|
|
self.cb_plist = None
|
|
self.cb_track = None
|
|
|
|
def test_playlist_init(self):
|
|
plist = playlist.Playlist("Test Playlist")
|
|
self.assertIsInstance(plist, list)
|
|
self.assertEqual(plist.name, "Test Playlist")
|
|
self.assertEqual(len(plist), 0)
|
|
self.assertEqual(plist.runtime(), "")
|
|
|
|
def test_playlist_add(self):
|
|
path = os.path.join(test_library, "Test Artist 01", "Test Album 1")
|
|
plist = playlist.Playlist("Test Playlist")
|
|
|
|
plist.add(tags.Track.add(os.path.join(path, "01 - Test Track 01.ogg")))
|
|
self.assertEqual(len(plist), 1)
|
|
self.assertEqual(plist.runtime(), "1 second")
|
|
|
|
plist.add(tags.Track.add(os.path.join(path, "02 - Test Track 02.ogg")))
|
|
self.assertEqual(len(plist), 2)
|
|
self.assertEqual(plist.runtime(), "3 seconds")
|
|
|
|
plist.add(None)
|
|
self.assertEqual(len(plist), 2)
|
|
self.assertEqual(plist.runtime(), "3 seconds")
|
|
self.assertNotIn(None, plist)
|
|
|
|
def test_playlist_runtime(self):
|
|
path = os.path.join(test_library, "Test Artist 01", "Test Album 1")
|
|
track = tags.Track.add(os.path.join(path, "01 - Test Track 01.ogg"))
|
|
plist = playlist.Playlist("Test Playlist")
|
|
|
|
plist.add(track)
|
|
self.assertEqual(plist.runtime(), "1 second")
|
|
track.length = 2
|
|
self.assertEqual(plist.runtime(), "2 seconds")
|
|
track.length = 60
|
|
self.assertEqual(plist.runtime(), "1 minute")
|
|
track.length = 120
|
|
self.assertEqual(plist.runtime(), "2 minutes")
|
|
track.length = 3600
|
|
self.assertEqual(plist.runtime(), "1 hour")
|
|
track.length = 7200
|
|
self.assertEqual(plist.runtime(), "2 hours")
|
|
track.length = 86400
|
|
self.assertEqual(plist.runtime(), "1 day")
|
|
track.length = 172800
|
|
self.assertEqual(plist.runtime(), "2 days")
|
|
|
|
def on_add(self, plist, track):
|
|
self.cb_plist = plist
|
|
self.cb_track = track
|
|
|
|
def test_playlist_notifications(self):
|
|
path = os.path.join(test_library, "Test Artist 01", "Test Album 1")
|
|
track = tags.Track.add(os.path.join(path, "01 - Test Track 01.ogg"))
|
|
plist = playlist.Playlist("Test Playlist")
|
|
|
|
notify.Notify.notify_me("on-add", self.on_add)
|
|
|
|
plist.add(track)
|
|
self.assertEqual(self.cb_plist, plist)
|
|
self.assertEqual(self.cb_track, track)
|
|
plist.add(None)
|
|
self.assertEqual(self.cb_plist, plist)
|
|
self.assertEqual(self.cb_track, track)
|