import unittest from Infinity_Vis_1.infinity_vis_1.models import MappingSpec, PatternParams, SceneState, SegmentSpec, TileSpec from Infinity_Vis_1.infinity_vis_1.renderer import FastRenderer class RendererTests(unittest.TestCase): def _mapping(self) -> MappingSpec: return MappingSpec( name="test", rows=1, cols=2, tiles=[ TileSpec( tile_id="r1c1", row=1, col=1, led_total=2, controller_ip="192.168.0.10", segments=[SegmentSpec(name="all", side="top", start_channel=1, led_count=2)], ), TileSpec( tile_id="r1c2", row=1, col=2, led_total=2, controller_ip="192.168.0.10", segments=[SegmentSpec(name="all", side="top", start_channel=1, led_count=2)], ), ], ) def test_shared_ip_tiles_produce_one_controller_payload(self) -> None: renderer = FastRenderer(self._mapping()) scene = SceneState(pattern_id="solid", params=PatternParams(primary_color="#FF0000")) frame = renderer.render(scene, timestamp=1.0) self.assertEqual(list(frame.controller_payloads), ["192.168.0.10"]) self.assertEqual(len(frame.controller_payloads["192.168.0.10"]), 12) def test_blackout_utility_zeroes_payload(self) -> None: renderer = FastRenderer(self._mapping()) scene = SceneState(pattern_id="solid", utility_mode="blackout") frame = renderer.render(scene, timestamp=1.0) self.assertEqual(frame.controller_payloads["192.168.0.10"], bytes(12)) if __name__ == "__main__": unittest.main()