73 lines
3.1 KiB
Python
73 lines
3.1 KiB
Python
# Copyright 2023 (c) Anna Schumaker.
|
|
"""Tests our combined Filter element."""
|
|
import io
|
|
import unittest
|
|
import emmental.audio.filter
|
|
from gi.repository import Gst
|
|
|
|
|
|
class TestFilter(unittest.TestCase):
|
|
"""Tests our custom Filter element."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
self.filter = emmental.audio.filter.Filter()
|
|
|
|
def test_init(self):
|
|
"""Test that the filter is set up correctly."""
|
|
self.assertIsInstance(self.filter, Gst.Bin)
|
|
self.assertIsInstance(self.filter.get_static_pad("src"), Gst.GhostPad)
|
|
self.assertIsInstance(self.filter.get_static_pad("sink"), Gst.GhostPad)
|
|
|
|
@unittest.mock.patch("sys.stdout", new_callable=io.StringIO)
|
|
def test_replaygain(self, mock_stdout: io.StringIO):
|
|
"""Test the ReplayGain element in the filter."""
|
|
self.assertIsInstance(self.filter._replaygain,
|
|
emmental.audio.replaygain.Filter)
|
|
|
|
self.assertEqual(self.filter.rg_mode, "disabled")
|
|
self.filter.rg_mode = "track"
|
|
self.assertEqual(self.filter._replaygain.mode, "track")
|
|
self.filter.rg_mode = "track"
|
|
self.assertEqual(mock_stdout.getvalue(),
|
|
"audio: setting ReplayGain mode to 'track'\n")
|
|
|
|
@unittest.mock.patch("sys.stdout", new_callable=io.StringIO)
|
|
def test_volume(self, mock_stdout: io.StringIO):
|
|
"""Test the Volume element in the filter."""
|
|
self.assertIsInstance(self.filter._volume, Gst.Element)
|
|
self.assertRegex(self.filter._volume.name, r"volume\d+")
|
|
self.assertEqual(self.filter._volume.get_property("volume"), 1.0)
|
|
|
|
self.assertFalse(self.filter.bg_enabled)
|
|
self.assertEqual(self.filter.bg_volume, 0.5)
|
|
|
|
self.filter.bg_enabled = True
|
|
self.assertEqual(self.filter._volume.get_property("volume"), 0.5)
|
|
self.assertEqual(mock_stdout.getvalue(),
|
|
"audio: setting background listening to 50%\n")
|
|
|
|
self.filter.bg_volume = 0.50
|
|
self.assertEqual(mock_stdout.getvalue(),
|
|
"audio: setting background listening to 50%\n")
|
|
|
|
self.filter.bg_volume = 0.75
|
|
self.assertEqual(self.filter._volume.get_property("volume"), 0.75)
|
|
self.assertEqual(mock_stdout.getvalue(),
|
|
"audio: setting background listening to 50%\n"
|
|
"audio: setting background listening to 75%\n")
|
|
|
|
self.filter.bg_enabled = False
|
|
self.assertEqual(self.filter._volume.get_property("volume"), 1.0)
|
|
self.assertEqual(mock_stdout.getvalue(),
|
|
"audio: setting background listening to 50%\n"
|
|
"audio: setting background listening to 75%\n"
|
|
"audio: setting background listening to off\n")
|
|
|
|
self.filter.bg_volume = 0.5
|
|
self.assertEqual(self.filter._volume.get_property("volume"), 1.0)
|
|
self.assertEqual(mock_stdout.getvalue(),
|
|
"audio: setting background listening to 50%\n"
|
|
"audio: setting background listening to 75%\n"
|
|
"audio: setting background listening to off\n")
|