73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from cognitive_agent.application.vehicle_profile import VehicleProfileRegistry
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
|
|
|
|
class VehicleProfileTests(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
self.registry = VehicleProfileRegistry(ROOT / "config" / "vehicles")
|
|
|
|
def test_loads_denza_n7_seat_motor_calibration(self) -> None:
|
|
profile = self.registry.get("denza_n7")
|
|
|
|
self.assertEqual(profile.id, "denza_n7")
|
|
self.assertEqual(profile.name, "腾势 N7")
|
|
self.assertEqual(set(profile.seat_motors), {
|
|
"longitudinal",
|
|
"cushion_tilt",
|
|
"backrest_recline",
|
|
"legrest_height",
|
|
})
|
|
self.assertEqual(profile.seat_motors["longitudinal"].range, 215)
|
|
self.assertEqual(profile.seat_motors["longitudinal"].hall_total_pulses, 480)
|
|
self.assertEqual(profile.seat_motors["longitudinal"].reference_zero, "rearmost")
|
|
self.assertEqual(profile.seat_motors["backrest_recline"].range, 68)
|
|
self.assertEqual(profile.seat_motors["backrest_recline"].hall_total_pulses, 917)
|
|
self.assertEqual(profile.seat_motors["legrest_height"].range, 78)
|
|
self.assertEqual(profile.seat_motors["legrest_height"].hall_total_pulses, 647)
|
|
|
|
def test_converts_relative_physical_delta_to_absolute_percent(self) -> None:
|
|
profile = self.registry.get("denza_n7")
|
|
|
|
self.assertEqual(
|
|
profile.relative_target_pct("longitudinal", current_pct=50, delta=50, direction="increase"),
|
|
73,
|
|
)
|
|
self.assertEqual(
|
|
profile.relative_target_pct("backrest_recline", current_pct=20, delta=10, direction="increase"),
|
|
35,
|
|
)
|
|
self.assertEqual(
|
|
profile.relative_target_pct("legrest_height", current_pct=10, delta=10, direction="decrease"),
|
|
0,
|
|
)
|
|
|
|
def test_exposes_display_angle_ranges_for_frontend(self) -> None:
|
|
profile = self.registry.get("denza_n7")
|
|
public = profile.public_dict()
|
|
|
|
backrest = public["seat"]["motors"]["backrest_recline"]
|
|
legrest = public["seat"]["motors"]["legrest_height"]
|
|
self.assertEqual(backrest["display_angle"], {
|
|
"kind": "included_angle",
|
|
"zero_deg": 95,
|
|
"max_deg": 163,
|
|
"provisional": True,
|
|
})
|
|
self.assertEqual(legrest["display_angle"], {
|
|
"kind": "included_angle",
|
|
"zero_deg": 95,
|
|
"max_deg": 173,
|
|
"provisional": True,
|
|
})
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|