Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_socialledge_encode_decode_mux_0(self):
"""Encode and decode the signals in a SENSOR_SONARS frame with mux 0.
"""
db = cantools.db.Database()
filename = os.path.join('tests', 'files', 'socialledge.dbc')
db.add_dbc_file(filename)
frame_id = 200
decoded_message = {
'SENSOR_SONARS_mux': 0,
'SENSOR_SONARS_err_count': 1,
'SENSOR_SONARS_left': 2,
'SENSOR_SONARS_middle': 3,
'SENSOR_SONARS_right': 4,
'SENSOR_SONARS_rear': 5
}
encoded_message = b'\x10\x00\x14\xe0\x01( \x03'
encoded = db.encode_message(frame_id, decoded_message)
def test_foobar_encode_decode(self):
db = cantools.db.Database()
filename = os.path.join('tests', 'files', 'foobar.dbc')
db.add_dbc_file(filename)
messages = [
(
'Foo',
{'Foo': 250, 'Bar': 0.0},
b'\x00\x00\x00\x00\x00\x00\x00\x00'
),
(
'Fum',
{'Fum': 9, 'Fam': 5},
b'\x09\x50\x00\x00\x00'
),
(
'Bar',
def test_foobar_decode_masked_frame_id(self):
db = cantools.db.Database(frame_id_mask=0xff)
filename = os.path.join('tests', 'files', 'foobar.dbc')
db.add_dbc_file(filename)
frame_ids = [
0x12331,
0xfff31,
0x00031
]
for frame_id in frame_ids:
db.get_message_by_frame_id(frame_id)
def test_add_bad_sym_string(self):
db = cantools.db.Database()
with self.assertRaises(cantools.db.ParseError) as cm:
db.add_sym_string('FormatVersion=6.0\n'
'Foo="Jopp"')
self.assertEqual(
str(cm.exception),
'Invalid SYM syntax at line 2, column 1: \'>!
def test_foobar_decode_masked_frame_id(self):
db = cantools.db.Database(frame_id_mask=0xff)
filename = os.path.join('tests', 'files', 'foobar.dbc')
db.add_dbc_file(filename)
frame_ids = [
0x12331,
0xfff31,
0x00031
]
for frame_id in frame_ids:
db.get_message_by_frame_id(frame_id)
def test_motohawk_encode_decode(self):
"""Encode and decode the signals in a ExampleMessage frame.
"""
db = cantools.db.Database()
filename = os.path.join('tests', 'files', 'motohawk.dbc')
db.add_dbc_file(filename)
example_message_name = 'ExampleMessage'
example_message_frame_id = 496
# Encode with non-enumerated values.
decoded_message = {
'Temperature': 250.55,
'AverageRadius': 3.2,
'Enable': 1
}
encoded_message = b'\xc0\x06\xe0\x00\x00\x00\x00\x00'
encoded = db.encode_message(example_message_frame_id, decoded_message)
self.assertEqual(encoded, encoded_message)
def test_missing_dbc_specifics(self):
db = cantools.db.Database()
node = cantools.db.Node('FakeNode', 'Comment')
db.nodes.append(node)
signals = [cantools.db.Signal('C', 0, 8)]
message = cantools.db.Message(0x20, 'D', 8, signals)
db.messages.append(message)
# Test that dump executes without raising.
db.as_dbc_string()
def test_encode_decode_no_scaling_no_decode_choices(self):
"""Encode and decode a message without scaling the signal values, not
decoding choices.
"""
db = cantools.db.Database()
filename = os.path.join('tests', 'files', 'motohawk.dbc')
db.add_dbc_file(filename)
decoded_message = {
'Temperature': 3,
'AverageRadius': 2,
'Enable': 1
}
encoded_message = b'\x84\x00\x60\x00\x00\x00\x00\x00'
encoded = db.encode_message(496,
decoded_message,
scaling=False)
self.assertEqual(encoded, encoded_message)
decoded = db.decode_message(496,
def test_jopp_6_0_sym(self):
filename = os.path.join('tests', 'files', 'jopp-6.0.sym')
db = cantools.db.Database()
db.add_sym_file(filename)
self.assertEqual(len(db.messages), 6)
self.assertEqual(len(db.messages[0].signals), 0)
# Message1.
message_1 = db.messages[3]
self.assertEqual(len(message_1.signals), 2)
self.assertEqual(message_1.frame_id, 0)
self.assertEqual(message_1.is_extended_frame, False)
self.assertEqual(message_1.name, 'Message1')
self.assertEqual(message_1.length, 8)
self.assertEqual(message_1.senders, [])
self.assertEqual(message_1.send_type, None)
self.assertEqual(message_1.cycle_time, 30)
self.assertEqual(len(message_1.signals), 2)
def test_the_homer_float(self):
filename = os.path.join('tests', 'files', 'the_homer.kcd')
db = cantools.db.Database()
db.add_kcd_file(filename)
# Message 1 (binary64).
frame_id = 0x832
decoded_message = {'AmbientLux': math.pi}
encoded_message = b'\x18\x2d\x44\x54\xfb\x21\x09\x40'
encoded = db.encode_message(frame_id, decoded_message)
self.assertEqual(len(encoded), 8)
self.assertEqual(encoded, encoded_message)
decoded = db.decode_message(frame_id, encoded)
self.assertEqual(decoded, decoded_message)
# Message 2 (binary32).
frame_id = 0x845