emmental/tests/header/test_replaygain.py

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