emmental/tests/audio/test_filter.py

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")