2021-06-30 16:10:37 -04:00
|
|
|
# Copyright 2021 (c) Anna Schumaker.
|
2021-07-15 10:19:05 -04:00
|
|
|
from . import artwork
|
2021-09-03 11:34:01 -04:00
|
|
|
from . import bass
|
2021-07-09 16:48:06 -04:00
|
|
|
from . import controls
|
2021-07-09 17:23:40 -04:00
|
|
|
from . import nowplaying
|
2021-06-30 16:10:37 -04:00
|
|
|
from . import player
|
2021-09-02 16:10:39 -04:00
|
|
|
from . import scale
|
2021-07-17 21:20:06 -04:00
|
|
|
from lib import publisher
|
2021-07-05 17:46:12 -04:00
|
|
|
from lib import settings
|
2021-08-30 16:27:33 -04:00
|
|
|
from gi.repository import GObject
|
|
|
|
from gi.repository import GLib
|
2021-06-30 16:10:37 -04:00
|
|
|
from gi.repository import Gst
|
|
|
|
import pathlib
|
2021-07-26 11:15:15 -04:00
|
|
|
import tagdb
|
2021-09-03 17:50:24 -04:00
|
|
|
import time
|
2021-06-30 16:10:37 -04:00
|
|
|
import unittest
|
|
|
|
|
2021-08-30 16:27:33 -04:00
|
|
|
main_context = GLib.main_context_default()
|
2021-07-26 10:57:01 -04:00
|
|
|
test_album = pathlib.Path("./data/Test Album/")
|
2021-06-30 16:10:37 -04:00
|
|
|
test_track = test_album / "01 - Test Track.ogg"
|
2021-09-03 11:58:48 -04:00
|
|
|
test_uri = test_track.absolute().as_uri()
|
2021-06-30 16:10:37 -04:00
|
|
|
|
|
|
|
|
|
|
|
class TestPlayer(unittest.TestCase):
|
|
|
|
def setUpClass():
|
2021-07-26 11:15:15 -04:00
|
|
|
tagdb.reset()
|
|
|
|
lib = tagdb.Library.add(test_album)
|
2021-06-30 16:10:37 -04:00
|
|
|
lib.scan().join()
|
|
|
|
|
|
|
|
def setUp(self):
|
2021-07-17 21:20:06 -04:00
|
|
|
self.changed = None
|
2021-07-05 17:46:12 -04:00
|
|
|
settings.reset()
|
2021-07-26 11:15:15 -04:00
|
|
|
self.library = tagdb.Library.store[test_album]
|
2021-06-30 16:10:37 -04:00
|
|
|
self.track = [ t for t in self.library.tracks if t.tracknumber == 1 ][0]
|
|
|
|
|
|
|
|
def tearDownClass():
|
2021-07-26 11:15:15 -04:00
|
|
|
tagdb.reset()
|
2021-06-30 16:10:37 -04:00
|
|
|
|
2021-08-30 16:27:33 -04:00
|
|
|
def on_track_changed(self, player, prev, new):
|
2021-07-17 21:20:06 -04:00
|
|
|
self.changed = (prev, new)
|
|
|
|
|
2021-06-30 16:10:37 -04:00
|
|
|
def test_player_init(self):
|
|
|
|
play = player.Player()
|
2021-09-03 11:34:01 -04:00
|
|
|
self.assertIsInstance(play, bass.BassPlayer)
|
2021-06-30 16:10:37 -04:00
|
|
|
self.assertIsInstance(play.bus, Gst.Bus)
|
2021-07-15 10:19:05 -04:00
|
|
|
self.assertIsInstance(play.Artwork, artwork.Artwork)
|
2021-09-02 16:10:39 -04:00
|
|
|
self.assertIsInstance(play.Autopause, scale.AutoPauseScale)
|
2021-06-30 16:10:37 -04:00
|
|
|
self.assertIsNone(play.track)
|
|
|
|
|
|
|
|
def test_player_load_track(self):
|
|
|
|
play = player.Player()
|
2021-08-30 16:27:33 -04:00
|
|
|
play.connect("track-changed", self.on_track_changed)
|
2021-06-30 16:10:37 -04:00
|
|
|
|
2021-09-03 11:58:48 -04:00
|
|
|
self.assertEqual(play.get_property("uri"), None)
|
2021-07-05 17:46:12 -04:00
|
|
|
|
2021-06-30 16:10:37 -04:00
|
|
|
play.load_track(self.track)
|
2021-09-03 11:58:48 -04:00
|
|
|
self.assertEqual(play.get_property("uri"), test_uri)
|
2021-07-05 17:46:12 -04:00
|
|
|
self.assertEqual(play.track, self.track)
|
|
|
|
self.assertEqual(settings.get_int("audio.trackid"), self.track.trackid)
|
2021-07-17 21:20:06 -04:00
|
|
|
self.assertEqual(self.changed, (None, self.track) )
|
2021-09-06 21:05:49 -04:00
|
|
|
self.assertFalse(play.playing)
|
2021-06-30 16:10:37 -04:00
|
|
|
|
2021-07-26 11:15:15 -04:00
|
|
|
tagdb.tags.User["Previous"].tracks.clear()
|
2021-07-05 17:46:12 -04:00
|
|
|
play2 = player.Player()
|
|
|
|
self.assertEqual(play2.track, self.track)
|
2021-07-26 11:15:15 -04:00
|
|
|
self.assertIn(self.track, tagdb.tags.User["Previous"].tracks)
|
2021-07-05 17:46:12 -04:00
|
|
|
|
2021-06-30 16:10:37 -04:00
|
|
|
def test_player_play_pause(self):
|
|
|
|
play = player.Player()
|
|
|
|
|
|
|
|
play.load_track(self.track)
|
|
|
|
self.assertEqual(play.track, self.track)
|
|
|
|
|
|
|
|
play.pause()
|
2021-09-06 21:05:49 -04:00
|
|
|
self.assertFalse(play.playing)
|
2021-06-30 16:10:37 -04:00
|
|
|
|
|
|
|
play.play()
|
2021-09-06 21:05:49 -04:00
|
|
|
self.assertTrue(play.playing)
|
2021-06-30 16:10:37 -04:00
|
|
|
|
2021-08-02 10:24:12 -04:00
|
|
|
play.playpause()
|
2021-09-06 21:05:49 -04:00
|
|
|
self.assertFalse(play.playing)
|
2021-08-02 10:24:12 -04:00
|
|
|
|
|
|
|
play.playpause()
|
2021-09-06 21:05:49 -04:00
|
|
|
self.assertTrue(play.playing)
|
2021-08-02 10:24:12 -04:00
|
|
|
|
2021-06-30 16:10:37 -04:00
|
|
|
play.pause()
|
2021-09-06 21:05:49 -04:00
|
|
|
self.assertFalse(play.playing)
|
2021-08-30 16:27:33 -04:00
|
|
|
|
2021-06-30 16:10:37 -04:00
|
|
|
def test_player_next_previous(self):
|
|
|
|
play = player.Player()
|
2021-08-30 16:27:33 -04:00
|
|
|
play.connect("track-changed", self.on_track_changed)
|
2021-06-30 16:10:37 -04:00
|
|
|
|
|
|
|
play.next()
|
|
|
|
self.assertEqual(play.track.trackid, 0)
|
2021-07-26 11:15:15 -04:00
|
|
|
self.assertEqual(self.changed, (None, tagdb.Tracks[0]) )
|
2021-06-30 16:10:37 -04:00
|
|
|
|
|
|
|
play.next()
|
|
|
|
self.assertEqual(play.track.trackid, 1)
|
2021-07-26 11:15:15 -04:00
|
|
|
self.assertEqual(self.changed, (tagdb.Tracks[0], tagdb.Tracks[1]) )
|
2021-06-30 16:10:37 -04:00
|
|
|
|
|
|
|
play.previous()
|
|
|
|
self.assertEqual(play.track.trackid, 0)
|
2021-07-26 11:15:15 -04:00
|
|
|
self.assertEqual(self.changed, (tagdb.Tracks[1], tagdb.Tracks[0]) )
|