Anna Schumaker
dae588bfaf
This will be added to a ListBox with the volume controls. Expanding the row will enable ReplayGain and give the user a menu to select ReplayGain mode. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
160 lines
6.4 KiB
Python
160 lines
6.4 KiB
Python
# Copyright 2022 (c) Anna Schumaker
|
|
"""Tests our ReplayGain selector."""
|
|
import unittest
|
|
import unittest.mock
|
|
import emmental.header.replaygain
|
|
from gi.repository import Gtk
|
|
from gi.repository import Adw
|
|
|
|
|
|
class TestCheckRow(unittest.TestCase):
|
|
"""Test case for our custom CheckRow ListBox row."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
self.checkrow = emmental.header.replaygain.CheckRow("test mode",
|
|
title="My Title")
|
|
|
|
def test_init(self):
|
|
"""Test that the CheckRow is set up properly."""
|
|
self.assertIsInstance(self.checkrow, Adw.ActionRow)
|
|
self.assertIsInstance(self.checkrow._prefix, Gtk.CheckButton)
|
|
|
|
self.assertEqual(self.checkrow.mode, "test mode")
|
|
self.assertEqual(self.checkrow.get_title(), "My Title")
|
|
self.assertEqual(self.checkrow.get_activatable_widget(),
|
|
self.checkrow._prefix)
|
|
|
|
def test_active(self):
|
|
"""Test the CheckRow active property."""
|
|
self.assertFalse(self.checkrow.active)
|
|
|
|
self.checkrow.active = True
|
|
self.assertTrue(self.checkrow._prefix.get_active())
|
|
self.checkrow._prefix.set_active(False)
|
|
self.assertFalse(self.checkrow.active)
|
|
|
|
checkrow2 = emmental.header.replaygain.CheckRow("other", active=True)
|
|
self.assertTrue(checkrow2.active)
|
|
self.assertTrue(checkrow2._prefix.get_active())
|
|
|
|
def test_group(self):
|
|
"""Test the CheckRow group property."""
|
|
self.assertIsNone(self.checkrow.group)
|
|
checkrow2 = emmental.header.replaygain.CheckRow("other",
|
|
group=self.checkrow)
|
|
self.assertEqual(checkrow2.group, self.checkrow)
|
|
|
|
def test_set_active(self):
|
|
"""Test the set_active() property."""
|
|
notify = unittest.mock.Mock()
|
|
self.checkrow.connect("notify::active", notify)
|
|
|
|
self.checkrow.set_active(True)
|
|
self.assertTrue(self.checkrow.active)
|
|
notify.assert_called()
|
|
|
|
notify.reset_mock()
|
|
self.checkrow.set_active(True)
|
|
notify.assert_not_called()
|
|
|
|
|
|
class TestReplayGainRow(unittest.TestCase):
|
|
"""Test case for our custom ReplayGain ListBox row."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
self.replaygain = emmental.header.replaygain.ReplayGainRow()
|
|
|
|
def test_init(self):
|
|
"""Check that the ReplayGainRow is set up properly."""
|
|
self.assertIsInstance(self.replaygain, Adw.ExpanderRow)
|
|
self.assertEqual(self.replaygain.get_title(), "Volume Normalization")
|
|
self.assertEqual(self.replaygain.get_subtitle(),
|
|
"Configure ReplayGain normalizing")
|
|
|
|
self.assertEqual(self.replaygain.mode, "auto")
|
|
self.assertFalse(self.replaygain.enabled)
|
|
|
|
self.replaygain.set_expanded(True)
|
|
self.assertTrue(self.replaygain._switch.get_active())
|
|
self.replaygain.set_expanded(False)
|
|
self.assertFalse(self.replaygain._switch.get_active())
|
|
|
|
def test_switch(self):
|
|
"""Check that the ReplayGainRow switch works as intended."""
|
|
self.assertIsInstance(self.replaygain._switch, Gtk.Switch)
|
|
self.assertEqual(self.replaygain._switch.get_valign(),
|
|
Gtk.Align.CENTER)
|
|
self.assertFalse(self.replaygain._switch.get_active())
|
|
|
|
self.replaygain._switch.set_active(True)
|
|
self.assertTrue(self.replaygain.get_expanded())
|
|
self.replaygain._switch.set_active(False)
|
|
self.assertFalse(self.replaygain.get_expanded())
|
|
|
|
def test_automatic_mode(self):
|
|
"""Test the ReplayGainRow automatic mode option."""
|
|
self.assertIsInstance(self.replaygain._automatic,
|
|
emmental.header.replaygain.CheckRow)
|
|
self.assertEqual(self.replaygain._automatic.get_title(),
|
|
"Automatic Mode")
|
|
self.assertEqual(self.replaygain._automatic.get_subtitle(),
|
|
"Emmental decides automatically")
|
|
|
|
self.assertEqual(self.replaygain._automatic.mode, "auto")
|
|
self.assertTrue(self.replaygain._automatic.active)
|
|
|
|
self.replaygain._track.active = True
|
|
self.replaygain._automatic.active = True
|
|
self.assertEqual(self.replaygain.mode, "auto")
|
|
self.assertFalse(self.replaygain._track.active)
|
|
|
|
def test_album_mode(self):
|
|
"""Test the ReplayGainRow album mode option."""
|
|
self.assertIsInstance(self.replaygain._album,
|
|
emmental.header.replaygain.CheckRow)
|
|
self.assertEqual(self.replaygain._album.get_title(), "Album Mode")
|
|
self.assertEqual(self.replaygain._album.get_subtitle(),
|
|
"Albums have the same volume")
|
|
|
|
self.assertEqual(self.replaygain._album.mode, "album")
|
|
self.assertEqual(self.replaygain._album.group,
|
|
self.replaygain._automatic)
|
|
|
|
self.replaygain._album.active = True
|
|
self.assertEqual(self.replaygain.mode, "album")
|
|
|
|
def test_track_mode(self):
|
|
"""Test the ReplayGainRow track mode option."""
|
|
self.assertIsInstance(self.replaygain._track,
|
|
emmental.header.replaygain.CheckRow)
|
|
self.assertEqual(self.replaygain._track.get_title(), "Track Mode")
|
|
self.assertEqual(self.replaygain._track.get_subtitle(),
|
|
"Tracks have the same volume")
|
|
|
|
self.assertEqual(self.replaygain._track.mode, "track")
|
|
self.assertEqual(self.replaygain._track.group,
|
|
self.replaygain._automatic)
|
|
|
|
self.replaygain._track.active = True
|
|
self.assertEqual(self.replaygain.mode, "track")
|
|
|
|
def test_mode_property(self):
|
|
"""Test that the mode property is set correctly."""
|
|
self.replaygain.mode = "album"
|
|
self.assertTrue(self.replaygain._album.active)
|
|
self.assertFalse(self.replaygain._automatic.active)
|
|
self.assertFalse(self.replaygain._track.active)
|
|
|
|
self.replaygain.mode = "track"
|
|
self.assertTrue(self.replaygain._track.active)
|
|
self.assertFalse(self.replaygain._automatic.active)
|
|
self.assertFalse(self.replaygain._album.active)
|
|
|
|
self.replaygain.mode = "anything else"
|
|
self.assertTrue(self.replaygain._automatic.active)
|
|
self.assertFalse(self.replaygain._album.active)
|
|
self.assertFalse(self.replaygain._track.active)
|
|
self.assertEqual(self.replaygain.mode, "auto")
|