@@ -19,6 +19,7 @@ class FakeHeos(threading.Thread):
|
||||
super().__init__(daemon=True)
|
||||
self.groups = {3: [3, 4]} # gid -> pids, leader first
|
||||
self.volumes = {pid: 20 for pid in self.NAMES}
|
||||
self.play_states = {pid: "play" for pid in self.NAMES}
|
||||
self.group_volumes = {3: 25}
|
||||
self.commands = [] # everything we were asked to do
|
||||
self.server = socket.socket()
|
||||
@@ -96,6 +97,15 @@ class FakeHeos(threading.Thread):
|
||||
store[key[1]] = int(args["level"])
|
||||
return self._ok(path, message=f"{key[0]}={key[1]}&level={args['level']}")
|
||||
|
||||
if path == "player/get_play_state":
|
||||
pid = int(args["pid"])
|
||||
return self._ok(path, message=f"pid={pid}&state={self.play_states[pid]}")
|
||||
|
||||
if path == "player/set_play_state":
|
||||
pid = int(args["pid"])
|
||||
self.play_states[pid] = args["state"]
|
||||
return self._ok(path, message=f"pid={pid}&state={args['state']}")
|
||||
|
||||
if path.endswith("/toggle_mute") or path == "system/heart_beat":
|
||||
return self._ok(path)
|
||||
|
||||
|
||||
@@ -144,6 +144,26 @@ class PanelTest(unittest.TestCase):
|
||||
self.panel.set_volume("living_room_group", 23)
|
||||
self.assertEqual(self.panel.step_volume("living_room_group", 3), 35)
|
||||
|
||||
# -- play / pause ------------------------------------------------------
|
||||
def test_toggle_play_flips_what_the_speakers_report(self):
|
||||
self.panel.scan()
|
||||
self.assertEqual(self.panel.get_play_state("home400"), "play")
|
||||
self.assertEqual(self.panel.toggle_play("home400"), "pause")
|
||||
self.assertEqual(self.panel.get_play_state("home400"), "pause")
|
||||
self.assertEqual(self.panel.toggle_play("home400"), "play")
|
||||
|
||||
def test_toggle_play_takes_an_explicit_state(self):
|
||||
self.panel.scan()
|
||||
self.assertEqual(self.panel.toggle_play("home400", "stop"), "stop")
|
||||
self.assertEqual(self.heos.play_states[HOME400_PID], "stop")
|
||||
|
||||
def test_pair_is_controlled_through_one_of_its_speakers(self):
|
||||
"""Playback is a player command -- a group has none of its own -- so
|
||||
it goes to the pair's leader."""
|
||||
self.panel.scan()
|
||||
self.panel.toggle_play("living_room_group", "pause")
|
||||
self.assertEqual(self.heos.play_states[3], "pause")
|
||||
|
||||
# -- the AVR ---------------------------------------------------------
|
||||
def test_renamed_inputs_and_selection(self):
|
||||
deadline = time.time() + 5
|
||||
@@ -176,6 +196,7 @@ class PanelTest(unittest.TestCase):
|
||||
self.assertEqual([r["key"] for r in state["rooms"]], ["home400", "living_room_group"])
|
||||
self.assertEqual([r["grouped"] for r in state["rooms"]], [True, False])
|
||||
self.assertTrue(all(isinstance(r["volume"], int) for r in state["rooms"]))
|
||||
self.assertEqual([r["play_state"] for r in state["rooms"]], ["play", "play"])
|
||||
|
||||
def test_state_reports_trouble_instead_of_blowing_up(self):
|
||||
self.panel.heos.host = "127.0.0.1"
|
||||
|
||||
Reference in New Issue
Block a user