mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-08 13:33:42 +08:00
Fix mocked driver-monitor graphics fixtures
This commit is contained in:
@@ -4,7 +4,7 @@ import io
|
||||
import struct
|
||||
from types import SimpleNamespace as NS
|
||||
import unittest
|
||||
from unittest.mock import Mock
|
||||
from unittest.mock import Mock, call
|
||||
import zlib
|
||||
|
||||
from openpilot.starpilot.ui.layout_preview_renderer import LayoutPreviewRenderer, _Canvas, _DriverMonitorArt, _png_rgba, sample_state
|
||||
@@ -174,18 +174,28 @@ class LayoutPreviewRendererTests(unittest.TestCase):
|
||||
canvas.monitor = _DriverMonitorArt.__new__(_DriverMonitorArt)
|
||||
canvas.monitor.profile = Profile.COMPACT
|
||||
canvas.monitor.renderer = Mock()
|
||||
matrix = Mock()
|
||||
matrix.attach_mock(canvas.monitor.renderer._render, 'render')
|
||||
state = sample_state("engaged", default_document())
|
||||
with patch("openpilot.starpilot.ui.layout_preview_renderer.draw_widget_frame"):
|
||||
with patch("openpilot.starpilot.ui.layout_preview_renderer.draw_widget_frame"), \
|
||||
patch.multiple(rl, rl_push_matrix=matrix.push, rl_translatef=matrix.translate,
|
||||
rl_scalef=matrix.scale, rl_pop_matrix=matrix.pop):
|
||||
canvas._render_driver_monitor(rl.Rectangle(), state)
|
||||
canvas.monitor.renderer._render.assert_not_called()
|
||||
self.assertEqual(matrix.mock_calls, [])
|
||||
state.customization["layouts"]["compact"]["driver_monitor"].update(x=200, y=100)
|
||||
canvas._render_driver_monitor(rl.Rectangle(), state)
|
||||
canvas.monitor.renderer._render.assert_called_once()
|
||||
self.assertEqual(matrix.mock_calls, [call.push(), call.translate(200, 100, 0), call.scale(1, 1, 1),
|
||||
call.translate(-200, -100, 0), call.render(canvas.monitor.renderer._rect), call.pop()])
|
||||
matrix.reset_mock()
|
||||
canvas.monitor.renderer._render.reset_mock()
|
||||
state.customization["layouts"]["compact"]["driver_monitor"].update(x=16, y=10)
|
||||
canvas.view.compact_hud._set_speed_alpha.x = 0.0
|
||||
canvas._render_driver_monitor(rl.Rectangle(), state)
|
||||
canvas.monitor.renderer._render.assert_called_once()
|
||||
self.assertEqual(matrix.mock_calls, [call.push(), call.translate(16, 10, 0), call.scale(1, 1, 1),
|
||||
call.translate(-16, -10, 0), call.render(canvas.monitor.renderer._rect), call.pop()])
|
||||
|
||||
def test_big_sidebar_matches_original_right_rail_and_is_sample_only(self):
|
||||
frame = rl.Rectangle(1860, 0, 300, 1080)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
from unittest.mock import Mock
|
||||
from unittest.mock import Mock, call as mock_call
|
||||
from openpilot.starpilot.ui.presentation import BitmapFonts
|
||||
import json
|
||||
from dataclasses import replace
|
||||
@@ -607,13 +607,16 @@ def test_driver_frame_matches_native_preview_and_keeps_face_renderer_separate(mo
|
||||
state = road(document)
|
||||
live = DriverMonitorLayer.__new__(DriverMonitorLayer)
|
||||
live.profile = Profile.COMPACT
|
||||
matrix = Mock()
|
||||
monkeypatch.setattr(live, 'renderer', NS(set_should_draw=Mock(), set_position=Mock(), _rect=object(),
|
||||
_fade_filter=NS(update=Mock()), _render=Mock()), raising=False)
|
||||
_fade_filter=NS(update=Mock()), _render=matrix.live_render), raising=False)
|
||||
preview = _DriverMonitorArt.__new__(_DriverMonitorArt)
|
||||
preview.profile = Profile.COMPACT
|
||||
monkeypatch.setattr(preview, 'renderer', NS(_render=Mock()), raising=False)
|
||||
monkeypatch.setattr(preview, 'renderer', NS(_render=matrix.preview_render), raising=False)
|
||||
with patch('openpilot.starpilot.ui.onroad_dm.draw_widget_frame') as live_frame, \
|
||||
patch('openpilot.starpilot.ui.layout_preview_renderer.draw_widget_frame') as preview_frame:
|
||||
patch('openpilot.starpilot.ui.layout_preview_renderer.draw_widget_frame') as preview_frame, \
|
||||
patch.multiple(rl, rl_push_matrix=matrix.push, rl_translatef=matrix.translate,
|
||||
rl_scalef=matrix.scale, rl_pop_matrix=matrix.pop):
|
||||
live.render(state, monitor=None, driver=None, fresh=False, onroad=True)
|
||||
preview.render(rl.Rectangle(0, 0, 536, 240), state)
|
||||
assert live_frame.call_args.args[1:] == preview_frame.call_args.args[1:]
|
||||
@@ -623,6 +626,12 @@ def test_driver_frame_matches_native_preview_and_keeps_face_renderer_separate(mo
|
||||
live.renderer._fade_filter.update.assert_called_once_with(0.35)
|
||||
live.renderer._render.assert_called_once()
|
||||
preview.renderer._render.assert_called_once()
|
||||
assert matrix.mock_calls == [
|
||||
mock_call.push(), mock_call.translate(90, 40, 0), mock_call.scale(1, 1, 1), mock_call.translate(-90, -40, 0),
|
||||
mock_call.live_render(live.renderer._rect), mock_call.pop(),
|
||||
mock_call.push(), mock_call.translate(90, 40, 0), mock_call.scale(1, 1, 1), mock_call.translate(-90, -40, 0),
|
||||
mock_call.preview_render(preview.renderer._rect), mock_call.pop(),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("enabled", [True, False])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from unittest.mock import Mock
|
||||
from unittest.mock import Mock, call
|
||||
from openpilot.starpilot.ui.presentation import BitmapFonts
|
||||
|
||||
from unittest.mock import patch
|
||||
@@ -158,19 +158,25 @@ class TestDriverMonitor(unittest.TestCase):
|
||||
monitor.visionPolicyState.pose.pitch = float('nan')
|
||||
layer = DriverMonitorLayer.__new__(DriverMonitorLayer)
|
||||
layer.profile = Profile.LARGE
|
||||
matrix = Mock()
|
||||
self.enterContext(
|
||||
patch.object(
|
||||
layer,
|
||||
'renderer',
|
||||
NS(set_should_draw=Mock(), set_position=Mock(), _rect=object(), _is_active=True, _fade_filter=NS(update=Mock()), _update_state=Mock(), _render=Mock()),
|
||||
NS(set_should_draw=Mock(), set_position=Mock(), _rect=object(), _is_active=True,
|
||||
_fade_filter=NS(update=Mock()), _update_state=Mock(), _render=matrix.render),
|
||||
create=True,
|
||||
)
|
||||
)
|
||||
layer.render(road(), monitor=monitor, driver=driver, fresh=True, onroad=True)
|
||||
with patch.multiple('openpilot.starpilot.ui.onroad_dm.rl', rl_push_matrix=matrix.push, rl_translatef=matrix.translate,
|
||||
rl_scalef=matrix.scale, rl_pop_matrix=matrix.pop):
|
||||
layer.render(road(), monitor=monitor, driver=driver, fresh=True, onroad=True)
|
||||
layer.renderer._update_state.assert_not_called()
|
||||
layer.renderer._render.assert_called_once()
|
||||
self.assertFalse(layer.renderer._is_active)
|
||||
layer.renderer._fade_filter.update.assert_called_once_with(0.35)
|
||||
self.assertEqual(matrix.mock_calls, [call.push(), call.translate(120, 840, 0), call.scale(1, 1, 1),
|
||||
call.translate(-120, -840, 0), call.render(layer.renderer._rect), call.pop()])
|
||||
|
||||
def test_visible_face_keeps_person_solid_even_when_vision_policy_is_inactive(self):
|
||||
from openpilot.selfdrive.ui.mici.onroad.driver_state import DriverStateRenderer
|
||||
@@ -196,13 +202,19 @@ class TestDriverMonitor(unittest.TestCase):
|
||||
document['layouts']['large']['driver_monitor'].update(x=700.5, y=600.25)
|
||||
layer = DriverMonitorLayer.__new__(DriverMonitorLayer)
|
||||
layer.profile = Profile.LARGE
|
||||
matrix = Mock()
|
||||
self.enterContext(
|
||||
patch.object(layer, 'renderer', NS(set_should_draw=Mock(), set_position=Mock(), _update_state=Mock(), _render=Mock(), _rect=object()), create=True)
|
||||
patch.object(layer, 'renderer', NS(set_should_draw=Mock(), set_position=Mock(), _update_state=Mock(),
|
||||
_render=matrix.render, _rect=object()), create=True)
|
||||
)
|
||||
layer.render(replace(road(), customization=document), monitor=monitor, driver=driver, fresh=True, onroad=True)
|
||||
with patch.multiple('openpilot.starpilot.ui.onroad_dm.rl', rl_push_matrix=matrix.push, rl_translatef=matrix.translate,
|
||||
rl_scalef=matrix.scale, rl_pop_matrix=matrix.pop):
|
||||
layer.render(replace(road(), customization=document), monitor=monitor, driver=driver, fresh=True, onroad=True)
|
||||
layer.renderer.set_position.assert_called_once_with(700.5, 600.25)
|
||||
layer.renderer._update_state.assert_called_once()
|
||||
layer.renderer._render.assert_called_once_with(layer.renderer._rect)
|
||||
self.assertEqual(matrix.mock_calls, [call.push(), call.translate(700.5, 600.25, 0), call.scale(1, 1, 1),
|
||||
call.translate(-700.5, -600.25, 0), call.render(layer.renderer._rect), call.pop()])
|
||||
|
||||
def test_composition_wires_actual_monitor_layer_before_alert(self):
|
||||
from contextlib import ExitStack
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"protected_inventory_sha256": "e10d74d6606301a472810871c5349040d6db434e66388e860ac574d5d1f8d043", "schema_version": 1}
|
||||
{"protected_inventory_sha256": "5cfd05f33d0a6367fd072ab3463b923ca56e8eb23596f0f83ca2ea38c3df9149", "schema_version": 1}
|
||||
|
||||
Reference in New Issue
Block a user