Source code for tests.test_canframedefinition

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
test_canframedefinition
----------------------------------

Tests for `canframe_definition` module.
"""

import sys
import unittest

assert sys.version_info >= (3, 3, 0), "Python version 3.3 or later required!"

from can4python import exceptions
from can4python import cansignal
from can4python import canframe_definition


[docs]class TestCanFrameDefinition(unittest.TestCase):
[docs] def setUp(self): self.frame_def = canframe_definition.CanFrameDefinition(1, 'testframedef') self.frame_def.producer_ids = set(["9"]) sig1 = cansignal.CanSignalDefinition('testsignal', 56, 1) # Least significant bit in last byte self.frame_def.signaldefinitions.append(sig1)
[docs] def testConstructor(self): fr_def = canframe_definition.CanFrameDefinition(1, 'testframedef', 3) self.assertEqual(fr_def.frame_id, 1) self.assertEqual(fr_def.dlc, 3) self.assertEqual(fr_def.name, 'testframedef') self.assertEqual(fr_def.cycletime, None) self.assertEqual(fr_def.frame_format, 'standard')
[docs] def testConstructorCycletime(self): fr_def = canframe_definition.CanFrameDefinition(1, 'testframedef', 3, 28) self.assertEqual(fr_def.frame_id, 1) self.assertEqual(fr_def.dlc, 3) self.assertEqual(fr_def.name, 'testframedef') self.assertEqual(fr_def.cycletime, 28) self.assertEqual(fr_def.frame_format, 'standard')
[docs] def testConstructorCycletimeNone(self): fr_def = canframe_definition.CanFrameDefinition(0x1FFFFFFF, 'testframedef', 3, None, frame_format='extended') self.assertEqual(fr_def.frame_id, 0x1FFFFFFF) self.assertEqual(fr_def.dlc, 3) self.assertEqual(fr_def.name, 'testframedef') self.assertEqual(fr_def.cycletime, None) self.assertEqual(fr_def.frame_format, 'extended')
[docs] def testConstructorNamedArguments(self): fr_def = canframe_definition.CanFrameDefinition(frame_id=1, name='testframedef', dlc=3, cycletime=28) self.assertEqual(fr_def.frame_id, 1) self.assertEqual(fr_def.dlc, 3) self.assertEqual(fr_def.name, 'testframedef') self.assertEqual(fr_def.cycletime, 28) self.assertEqual(fr_def.frame_format, 'standard')
[docs] def testConstructorWrongValues(self): self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, -1, 'testframedef') self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, "1,0", 'testframedef') self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, None, 'testframedef') self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 0x800, 'testframedef', 8, 50, 'standard') self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 0x20000000, 'testframedef', 8, 50, 'extended') self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 1, 'testframedef', -1) self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 1, 'testframedef', 9) self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 1, 'testframedef', "8,0") self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 1, 'testframedef', None) self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 1, 'testframedef', 8, -3) self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 1, 'testframedef', 8, "8,0") self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 1, 'testframedef', 8, 50, 'ABC') self.assertRaises(exceptions.CanException, canframe_definition.CanFrameDefinition, 1, 'testframedef', 8, 50, 1)
[docs] def testProperties(self): self.assertEqual(self.frame_def.frame_id, 1) self.assertEqual(self.frame_def.name, 'testframedef') self.assertEqual(self.frame_def.dlc, 8) self.assertEqual(self.frame_def.cycletime, None) self.assertEqual(self.frame_def.throttle_time, None) self.assertEqual(self.frame_def.frame_format, 'standard') self.assertEqual(self.frame_def.receive_on_change_only, False) self.assertEqual(self.frame_def.producer_ids, set(["9"])) self.frame_def.frame_id = 2 self.frame_def.name = 'testframedef2' self.frame_def.dlc = 4 self.frame_def.cycletime = 29 self.frame_def.throttle_time = 155 self.frame_def.frame_format = 'extended' self.frame_def.receive_on_change_only = True self.frame_def.producer_ids = ["9", "1", "1"] self.assertEqual(self.frame_def.frame_id, 2) self.assertEqual(self.frame_def.name, 'testframedef2') self.assertEqual(self.frame_def.dlc, 4) self.assertEqual(self.frame_def.cycletime, 29) self.assertEqual(self.frame_def.throttle_time, 155) self.assertEqual(self.frame_def.frame_format, 'extended') self.assertEqual(self.frame_def.receive_on_change_only, True) self.assertEqual(self.frame_def.producer_ids, set(["1", "9"])) self.frame_def.producer_ids = None self.assertEqual(self.frame_def.producer_ids, set())
[docs] def testPropertiesWrongValues(self): self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'frame_id', -1) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'frame_id', 0x800) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'frame_id', "1,0") self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'frame_id', None) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'dlc', -1) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'dlc', 9) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'dlc', "1,0") self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'frame_id', None) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'cycletime', -1) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'cycletime', "1,0") self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'cycletime', 60001) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'throttle_time', -1) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'throttle_time', "1,0") self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'throttle_time', 60001) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'frame_format', 'ABC') self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'frame_format', None) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'frame_format', 1) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'producer_ids', 3) self.assertRaises(exceptions.CanException, setattr, self.frame_def, 'producer_ids', "3")
[docs] def testIsOutbound(self): self.assertTrue(self.frame_def.is_outbound(["9"])) self.assertFalse(self.frame_def.is_outbound(["99"])) self.assertFalse(self.frame_def.is_outbound([9]))
[docs] def testIsOutboundWrongType(self): self.assertRaises(exceptions.CanException, self.frame_def.is_outbound, 9)
[docs] def testGetSignalMask(self): testsig2 = cansignal.CanSignalDefinition('testsignal2', 8, 16, endianness='big') # Two leftmost bytes testsig3 = cansignal.CanSignalDefinition('testsignal3', 24, 16, endianness='little', maxvalue=1200) # Two center bytes testsig4 = cansignal.CanSignalDefinition('testsignal4', 48, 8, signaltype='signed') # Second last byte self.frame_def.signaldefinitions.append(testsig2) self.frame_def.signaldefinitions.append(testsig3) self.frame_def.signaldefinitions.append(testsig4) self.assertEqual(self.frame_def.get_signal_mask(), b'\xff\xff\x00\xff\xff\x00\xff\x01')
[docs] def testRepr(self): print("\n\n\nRepresentation:") print(repr(self.frame_def)) print("Representation (short version):") result = self.frame_def.__repr__(long_text=False) print(result) # Check the output manually known_result = "CAN frame definition. ID=1 (0x001, standard) 'testframedef', DLC=8, " + \ "cycletime None ms, producers: ['9'], no throttling, contains 1 signals" self.assertEqual(result.strip(), known_result.strip())
[docs] def testReprThrottling(self): fr_def = canframe_definition.CanFrameDefinition(123) fr_def.throttle_time = 30 # ms result = repr(fr_def) known_result = "CAN frame definition. ID=123 (0x07B, standard) '', DLC=8, " + \ "cycletime None ms, producers: [], throttling 30 ms, contains 0 signals" self.assertEqual(result.strip(), known_result.strip())
[docs] def testReprNoSignals(self): fr_def = canframe_definition.CanFrameDefinition(1, 'testframedef') result = repr(fr_def) known_result = "CAN frame definition. ID=1 (0x001, standard) 'testframedef', DLC=8, " + \ "cycletime None ms, producers: [], no throttling, contains 0 signals" self.assertEqual(result.strip(), known_result.strip())
[docs] def testGetDescriptiveAsciiArt(self): result = self.frame_def.get_descriptive_ascii_art() print('\n\n' + result) # Check the output manually
if __name__ == '__main__': unittest.main(verbosity=2)