#!/usr/bin/env python3 from cereal import car import unittest from openpilot.selfdrive.car.toyota.values import CAR, DBC, TSS2_CAR, ANGLE_CONTROL_CAR, RADAR_ACC_CAR, FW_VERSIONS Ecu = car.CarParams.Ecu class TestToyotaInterfaces(unittest.TestCase): def test_car_sets(self): self.assertTrue(len(ANGLE_CONTROL_CAR - TSS2_CAR) == 0) self.assertTrue(len(RADAR_ACC_CAR - TSS2_CAR) == 0) def test_tss2_dbc(self): # We make some assumptions about TSS2 platforms, # like looking up certain signals only in this DBC for car_model, dbc in DBC.items(): if car_model in TSS2_CAR: self.assertEqual(dbc["pt"], "toyota_nodsu_pt_generated") def test_essential_ecus(self): # Asserts standard ECUs exist for each platform common_ecus = {Ecu.fwdRadar, Ecu.fwdCamera} for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model): present_ecus = {ecu[0] for ecu in ecus} missing_ecus = common_ecus - present_ecus self.assertEqual(len(missing_ecus), 0) # Some exceptions for other common ECUs if car_model not in (CAR.ALPHARD_TSS2,): self.assertIn(Ecu.abs, present_ecus) if car_model not in (CAR.MIRAI,): self.assertIn(Ecu.engine, present_ecus) if car_model not in (CAR.PRIUS_V, CAR.LEXUS_CTH): self.assertIn(Ecu.eps, present_ecus) if __name__ == "__main__": unittest.main()