First upload, 18 controller version
This commit is contained in:
95
tests/test_preview_widget.py
Normal file
95
tests/test_preview_widget.py
Normal file
@@ -0,0 +1,95 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
import unittest
|
||||
|
||||
from app.config.xml_mapping import load_config
|
||||
from app.qt_compat import QRectF
|
||||
from app.ui.preview_widget import (
|
||||
PREVIEW_MODE_LEDS,
|
||||
PREVIEW_MODE_TECHNICAL,
|
||||
PREVIEW_MODE_TILE,
|
||||
PreviewWidget,
|
||||
normalize_preview_mode,
|
||||
)
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
SAMPLE_MAPPING = ROOT / "sample_data" / "infinity_mirror_mapping_clean.xml"
|
||||
|
||||
|
||||
class PreviewWidgetTests(unittest.TestCase):
|
||||
def test_preview_mode_normalization_defaults_to_tile(self) -> None:
|
||||
self.assertEqual(normalize_preview_mode(PREVIEW_MODE_TILE), PREVIEW_MODE_TILE)
|
||||
self.assertEqual(normalize_preview_mode(PREVIEW_MODE_TECHNICAL), PREVIEW_MODE_TECHNICAL)
|
||||
self.assertEqual(normalize_preview_mode(PREVIEW_MODE_LEDS), PREVIEW_MODE_LEDS)
|
||||
self.assertEqual(normalize_preview_mode("unknown"), PREVIEW_MODE_TILE)
|
||||
|
||||
def test_preview_mode_flags_keep_tile_and_led_views_separate(self) -> None:
|
||||
widget = PreviewWidget.__new__(PreviewWidget)
|
||||
|
||||
widget.preview_mode = PREVIEW_MODE_TILE
|
||||
self.assertEqual(
|
||||
widget._mode_flags(),
|
||||
{
|
||||
"show_fill": True,
|
||||
"show_labels": True,
|
||||
"show_leds": False,
|
||||
"show_guides": False,
|
||||
"show_direction": False,
|
||||
"show_overlay_title": False,
|
||||
"show_technical_meta": False,
|
||||
},
|
||||
)
|
||||
|
||||
widget.preview_mode = PREVIEW_MODE_TECHNICAL
|
||||
self.assertEqual(
|
||||
widget._mode_flags(),
|
||||
{
|
||||
"show_fill": True,
|
||||
"show_labels": True,
|
||||
"show_leds": True,
|
||||
"show_guides": True,
|
||||
"show_direction": True,
|
||||
"show_overlay_title": True,
|
||||
"show_technical_meta": True,
|
||||
},
|
||||
)
|
||||
|
||||
widget.preview_mode = PREVIEW_MODE_LEDS
|
||||
self.assertEqual(
|
||||
widget._mode_flags(),
|
||||
{
|
||||
"show_fill": False,
|
||||
"show_labels": False,
|
||||
"show_leds": True,
|
||||
"show_guides": False,
|
||||
"show_direction": False,
|
||||
"show_overlay_title": False,
|
||||
"show_technical_meta": False,
|
||||
},
|
||||
)
|
||||
|
||||
def test_segment_points_follow_counterclockwise_perimeter_order(self) -> None:
|
||||
config = load_config(SAMPLE_MAPPING)
|
||||
tile = config.sorted_tiles()[0]
|
||||
widget = PreviewWidget.__new__(PreviewWidget)
|
||||
rect = QRectF(0.0, 0.0, 200.0, 200.0)
|
||||
|
||||
points_by_side = {
|
||||
segment.side: PreviewWidget._segment_points_for_side(widget, tile, segment, rect)
|
||||
for segment in tile.segments
|
||||
}
|
||||
|
||||
self.assertEqual((round(points_by_side["left"][0].x(), 1), round(points_by_side["left"][0].y(), 1)), (4.0, 4.0))
|
||||
self.assertEqual((round(points_by_side["left"][-1].x(), 1), round(points_by_side["left"][-1].y(), 1)), (4.0, 196.0))
|
||||
self.assertEqual((round(points_by_side["bottom"][0].x(), 1), round(points_by_side["bottom"][0].y(), 1)), (4.0, 196.0))
|
||||
self.assertEqual((round(points_by_side["bottom"][-1].x(), 1), round(points_by_side["bottom"][-1].y(), 1)), (196.0, 196.0))
|
||||
self.assertEqual((round(points_by_side["right"][0].x(), 1), round(points_by_side["right"][0].y(), 1)), (196.0, 196.0))
|
||||
self.assertEqual((round(points_by_side["right"][-1].x(), 1), round(points_by_side["right"][-1].y(), 1)), (196.0, 4.0))
|
||||
self.assertEqual((round(points_by_side["top"][0].x(), 1), round(points_by_side["top"][0].y(), 1)), (196.0, 4.0))
|
||||
self.assertEqual((round(points_by_side["top"][-1].x(), 1), round(points_by_side["top"][-1].y(), 1)), (4.0, 4.0))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user