Files
RFP_Infinity-Vis/Infinity_Vis_1/tests/test_renderer.py

49 lines
1.8 KiB
Python

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