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