emmental/audio/test_menu.py

109 lines
4.4 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
from . import menu
from lib import settings
from gi.repository import Gtk
import tagdb
import unittest
class TestAudioMenu(unittest.TestCase):
def setUp(self):
settings.reset()
def test_audio_menu_init(self):
button = menu.Button()
self.assertIsInstance(button, Gtk.MenuButton)
self.assertIsInstance(button.popover, Gtk.Popover)
self.assertIsInstance(button.overlay, Gtk.Overlay)
self.assertIsInstance(button.toggle, Gtk.ToggleButton)
self.assertIsInstance(button.grid, Gtk.Grid)
self.assertIsNotNone(button.icon)
self.assertTrue(button.has_css_class("normal-icons"))
self.assertTrue(button.grid.has_css_class("large-icons"))
self.assertEqual(button.grid.get_column_spacing(), 5)
self.assertEqual(button.get_popover(), button.popover)
self.assertEqual(button.popover.get_child(), button.grid)
self.assertEqual(button.toggle, button.get_first_child())
self.assertEqual(button.toggle.get_child(), button.overlay)
self.assertEqual(button.icon.get_margin_top(), 5)
self.assertIn(button.icon, button.overlay)
def test_audio_menu_counter_init(self):
button = menu.Button()
self.assertIsInstance(button.pause, Gtk.Image)
self.assertIsInstance(button.count, Gtk.Label)
self.assertIsInstance(button.counter, Gtk.Range)
self.assertEqual(button.pause.get_icon_name(), "media-playback-start")
self.assertEqual(button.count.get_text(), " ")
self.assertEqual(button.count.get_yalign(), 0)
self.assertEqual(button.counter.get_adjustment(), tagdb.Stack.Counter)
self.assertEqual(button.counter.get_digits(), 0)
self.assertTrue(button.counter.get_draw_value())
self.assertIn(button.pause, button.grid)
self.assertIn(button.counter, button.grid)
self.assertIn(button.count, button.overlay)
def test_audio_menu_counter(self):
button = menu.Button()
self.assertEqual(button.format_counter(button.counter, -1), "Keep Playing")
self.assertEqual(button.format_counter(button.counter, 0), "This Track")
self.assertEqual(button.format_counter(button.counter, 1), "Next Track")
self.assertEqual(button.format_counter(button.counter, 2), "2 Tracks")
tagdb.Stack.Counter.increment()
self.assertEqual(button.pause.get_icon_name(), "media-playback-pause")
self.assertEqual(button.count.get_text(), "0")
tagdb.Stack.Counter.decrement()
self.assertEqual(button.pause.get_icon_name(), "media-playback-start")
self.assertEqual(button.count.get_text(), " ")
def test_audio_menu_volume_init(self):
button = menu.Button()
adjustment = button.volume.get_adjustment()
self.assertIsInstance(button.vol_img, Gtk.Image)
self.assertIsInstance(button.volume, Gtk.Scale)
self.assertTrue(button.volume.get_draw_value())
self.assertEqual(settings.get_float("audio.volume"), 1.0)
self.assertEqual(adjustment.get_lower(), 0.0)
self.assertEqual(adjustment.get_upper(), 1.0)
self.assertEqual(adjustment.get_step_increment(), 0.05)
self.assertEqual(adjustment.get_value(), 1.0)
self.assertEqual(button.vol_img.get_icon_name(), "audio-volume-high-symbolic")
self.assertIn(button.vol_img, button.grid)
self.assertIn(button.volume, button.grid)
def test_audio_menu_volume(self):
button = menu.Button()
button.volume.set_value(0)
self.assertEqual(button.vol_img.get_icon_name(), "audio-volume-muted-symbolic")
self.assertEqual(settings.get("audio.volume"), "0.0")
self.assertEqual(button.get_volume(), 0.0)
button.volume.set_value(0.3)
self.assertEqual(button.vol_img.get_icon_name(), "audio-volume-low-symbolic")
self.assertEqual(settings.get("audio.volume"), "0.3")
self.assertEqual(button.get_volume(), 0.3)
button.volume.set_value(0.6)
self.assertEqual(button.vol_img.get_icon_name(), "audio-volume-medium-symbolic")
self.assertEqual(settings.get("audio.volume"), "0.6")
self.assertEqual(button.get_volume(), 0.6)
button.volume.set_value(0.9)
self.assertEqual(button.vol_img.get_icon_name(), "audio-volume-high-symbolic")
self.assertEqual(settings.get("audio.volume"), "0.9")
self.assertEqual(button.get_volume(), 0.9)