64 lines
2.5 KiB
Python
64 lines
2.5 KiB
Python
# Copyright 2022 (c) Anna Schumaker.
|
|
"""Tests our Mpris Player object."""
|
|
import pathlib
|
|
import unittest
|
|
import unittest.mock
|
|
import emmental.mpris2.player
|
|
from gi.repository import Gio
|
|
|
|
|
|
class TestPlayer(unittest.TestCase):
|
|
"""Test the mpris2 player object."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
self.player = emmental.mpris2.player.Player()
|
|
|
|
def test_xml_files(self):
|
|
"""Test that the interface definition files exist."""
|
|
mpris2 = pathlib.Path(emmental.mpris2.__file__).parent
|
|
self.assertEqual(emmental.mpris2.player.PLAYER_XML,
|
|
mpris2 / "Player.xml")
|
|
self.assertTrue(emmental.mpris2.player.PLAYER_XML.is_file())
|
|
|
|
def test_init(self):
|
|
"""Test that the application object is configured correctly."""
|
|
self.assertIsInstance(self.player, emmental.mpris2.dbus.Object)
|
|
self.assertIsInstance(self.player.nodeinfo, Gio.DBusNodeInfo)
|
|
self.assertIsInstance(self.player.interface, Gio.DBusInterfaceInfo)
|
|
|
|
def test_properties(self):
|
|
"""Test Player properties."""
|
|
self.assertEqual(self.player.PlaybackStatus, "Stopped")
|
|
self.assertEqual(self.player.LoopStatus, "None")
|
|
self.assertEqual(self.player.Rate, 1.0)
|
|
self.assertFalse(self.player.Shuffle)
|
|
self.assertEqual(self.player.Volume, 1.0)
|
|
self.assertEqual(self.player.Position, 0)
|
|
self.assertDictEqual(self.player.Metadata, {})
|
|
self.assertEqual(self.player.MinimumRate, 1.0)
|
|
self.assertEqual(self.player.MaximumRate, 1.0)
|
|
self.assertFalse(self.player.CanGoNext)
|
|
self.assertFalse(self.player.CanGoPrevious)
|
|
self.assertFalse(self.player.CanPlay)
|
|
self.assertFalse(self.player.CanPause)
|
|
self.assertFalse(self.player.CanSeek)
|
|
self.assertTrue(self.player.CanControl)
|
|
|
|
def test_signals(self):
|
|
"""Test that Player signals exist."""
|
|
self.player.emit("Next")
|
|
self.player.emit("Previous")
|
|
self.player.emit("Pause")
|
|
self.player.emit("PlayPause")
|
|
self.player.emit("Stop")
|
|
self.player.emit("Play")
|
|
self.player.emit("Seek", 12345)
|
|
self.player.emit("SetPosition",
|
|
"/com/nowheycreamery/emmental/123", 12345)
|
|
|
|
open_path = unittest.mock.Mock()
|
|
self.player.connect("OpenPath", open_path)
|
|
self.player.emit("OpenUri", "/a/b/c.ogg")
|
|
open_path.assert_called_with(self.player, pathlib.Path("/a/b/c.ogg"))
|