emmental/audio/test_player.py
Anna Schumaker ba1a444bdf audio: Have the player handle Autopause adjustments
Putting this in the playlist layer was an experiment, but it's easier to
do from the Player now that we've abstracted out all the Gstreamer stuff
into the BassClass

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-08 10:07:46 -04:00

102 lines
2.9 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
from . import artwork
from . import bass
from . import controls
from . import nowplaying
from . import player
from . import scale
from lib import publisher
from lib import settings
from gi.repository import GObject
from gi.repository import GLib
from gi.repository import Gst
import pathlib
import tagdb
import time
import unittest
main_context = GLib.main_context_default()
test_album = pathlib.Path("./data/Test Album/")
test_track = test_album / "01 - Test Track.ogg"
test_uri = test_track.absolute().as_uri()
class TestPlayer(unittest.TestCase):
def setUpClass():
tagdb.reset()
lib = tagdb.Library.add(test_album)
lib.scan().join()
def setUp(self):
self.changed = None
settings.reset()
self.library = tagdb.Library.store[test_album]
self.track = [ t for t in self.library.tracks if t.tracknumber == 1 ][0]
def tearDownClass():
tagdb.reset()
def on_track_changed(self, player, prev, new):
self.changed = (prev, new)
def test_player_init(self):
play = player.Player()
self.assertIsInstance(play, bass.BassPlayer)
self.assertIsInstance(play.bus, Gst.Bus)
self.assertIsInstance(play.Autopause, scale.AutoPauseScale)
self.assertIsNone(play.track)
def test_player_load_track(self):
play = player.Player()
play.connect("track-changed", self.on_track_changed)
self.assertEqual(play.get_property("uri"), None)
play.load_track(self.track)
self.assertEqual(play.track, self.track)
self.assertEqual(settings.get_int("audio.trackid"), self.track.trackid)
self.assertEqual(self.changed, (None, self.track) )
self.assertTrue(play.playing)
tagdb.tags.User["Previous"].tracks.clear()
play2 = player.Player()
self.assertEqual(play2.track, self.track)
self.assertIn(self.track, tagdb.tags.User["Previous"].tracks)
def test_player_play_pause(self):
play = player.Player()
play.load_track(self.track)
self.assertEqual(play.track, self.track)
play.pause()
self.assertFalse(play.playing)
play.play()
self.assertTrue(play.playing)
play.playpause()
self.assertFalse(play.playing)
play.playpause()
self.assertTrue(play.playing)
play.pause()
self.assertFalse(play.playing)
def test_player_next_previous(self):
play = player.Player()
play.connect("track-changed", self.on_track_changed)
play.next()
self.assertEqual(play.track.trackid, 0)
self.assertEqual(self.changed, (None, tagdb.Tracks[0]) )
play.next()
self.assertEqual(play.track.trackid, 1)
self.assertEqual(self.changed, (tagdb.Tracks[0], tagdb.Tracks[1]) )
play.previous()
self.assertEqual(play.track.trackid, 0)
self.assertEqual(self.changed, (tagdb.Tracks[1], tagdb.Tracks[0]) )