CANParser: test missing messages in DBC (#871)

test
This commit is contained in:
Shane Smiskol 2023-06-30 15:29:46 -07:00 committed by GitHub
parent e51a78721d
commit 7a760a130a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 0 deletions

View File

@ -2,6 +2,7 @@
import os
import unittest
import random
from functools import partial
import cereal.messaging as messaging
from opendbc.can.parser import CANParser
@ -317,6 +318,18 @@ class TestCanParserPacker(unittest.TestCase):
ts_nanos = parser.ts_nanos["POWERTRAIN_DATA"].values()
self.assertEqual(set(ts_nanos), {0})
def test_undefined_signals(self):
# Ensure we don't allow messages not in the DBC
existing_signals = {"STEERING_CONTROL": ["STEER_TORQUE_REQUEST", "SET_ME_X00_2", "COUNTER"],
"CAN_FD_MESSAGE": ["SIGNED", "64_BIT_LE", "64_BIT_BE", "COUNTER"]}
for msg, sigs in existing_signals.items():
for sig in sigs:
CANParser(TEST_DBC, [(sig, msg)], [(msg, 0)])
self.assertRaises(RuntimeError, partial(CANParser, TEST_DBC, [(sig, msg + "123")], [(msg, 0)]))
self.assertRaises(RuntimeError, partial(CANParser, TEST_DBC, [(sig, msg)], [(msg + "123", 0)]))
self.assertRaises(RuntimeError, partial(CANParser, TEST_DBC, [(sig, msg + "123")], [(msg + "123", 0)]))
if __name__ == "__main__":
unittest.main()