emmental/curds/playlist/test_playlist.py

93 lines
3.5 KiB
Python

# Copyright 2019 (c) Anna Schumaker.
from . import playlist
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()
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_add1(self, plist, track):
self.cb_plist = plist
def on_add2(self, plist, track):
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")
self.assertIsInstance(plist.notifications, dict)
playlist.Playlist.notify_me("on-add", self.on_add1)
playlist.Playlist.notify_me("on-add", self.on_add2)
self.assertIsInstance(playlist.Playlist.notifications["on-add"], list)
self.assertEqual(len(playlist.Playlist.notifications["on-add"]), 2)
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)
self.cb_plist = None
self.cb_track = None
track = tags.Track.add(os.path.join(path, "02 - Test Track 02.ogg"))
playlist.Playlist.never_mind("on-add", self.on_add1)
self.assertEqual(len(playlist.Playlist.notifications["on-add"]), 1)
playlist.Playlist.never_mind("on-add", self.on_add1)
plist.add(track)
self.assertIsNone(self.cb_plist)
self.assertEqual(self.cb_track, track)