First upload, 18 controller version
This commit is contained in:
51
tests/test_geometry.py
Normal file
51
tests/test_geometry.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
import unittest
|
||||
|
||||
from app.config.xml_mapping import load_config
|
||||
from app.core.geometry import segment_led_positions, segment_side
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
SAMPLE_MAPPING = ROOT / "sample_data" / "infinity_mirror_mapping_clean.xml"
|
||||
|
||||
|
||||
class GeometryTests(unittest.TestCase):
|
||||
def test_segment_side_inference_matches_mapping_edges(self) -> None:
|
||||
config = load_config(SAMPLE_MAPPING)
|
||||
tile = config.sorted_tiles()[0]
|
||||
|
||||
self.assertEqual(
|
||||
{
|
||||
segment.name: segment_side(tile, segment)
|
||||
for segment in tile.segments
|
||||
},
|
||||
{
|
||||
"1 - 81 LED 27": "left",
|
||||
"82 - 162 LED 27": "bottom",
|
||||
"163 - 243 LED 27": "right",
|
||||
"244 - 318 LED 25": "top",
|
||||
},
|
||||
)
|
||||
|
||||
def test_segment_led_positions_follow_counterclockwise_channel_order(self) -> None:
|
||||
config = load_config(SAMPLE_MAPPING)
|
||||
tile = config.sorted_tiles()[0]
|
||||
positions_by_side = {
|
||||
segment.side: segment_led_positions(tile, segment, insets=(0.02, 0.02))
|
||||
for segment in tile.segments
|
||||
}
|
||||
|
||||
self.assertEqual(positions_by_side["left"][0], (0.02, 0.02))
|
||||
self.assertEqual(positions_by_side["left"][-1], (0.02, 0.98))
|
||||
self.assertEqual(positions_by_side["bottom"][0], (0.02, 0.98))
|
||||
self.assertEqual(positions_by_side["bottom"][-1], (0.98, 0.98))
|
||||
self.assertEqual(positions_by_side["right"][0], (0.98, 0.98))
|
||||
self.assertEqual(positions_by_side["right"][-1], (0.98, 0.02))
|
||||
self.assertEqual(positions_by_side["top"][0], (0.98, 0.02))
|
||||
self.assertEqual(positions_by_side["top"][-1], (0.02, 0.02))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user