diff --git a/tests/test_kiss.py b/tests/test_kiss.py index 452a7e88ef544a1ccb01fbfa530f60ff444662f0..80fc6e06301326fe1db934feda82ff277ef59050 100644 --- a/tests/test_kiss.py +++ b/tests/test_kiss.py @@ -8,6 +8,7 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function +import array import sys import unittest @@ -29,16 +30,28 @@ class KissUtilTestCase(unittest.TestCase): """Test class for KISS Python Module.""" + # KG6WTF>S7TSUV,MTOSO-2,WIDE2*,qAR,KF6FIR-10:`17El#X-/kg6wtf@gosselinfamily.com + RAW_FRAME = [192, 0, 75, 71, 54, 87, 84, 70, 62, 83, 55, 84, 83, 85, 86, 44, 77, 84, 79, 83, 79, 45, 50, 44, 87, 73, + 68, 69, 50, 42, 44, 113, 65, 82, 44, 75, 70, 54, 70, 73, 82, 45, 49, 48, 58, 96, 49, 55, 69, 108, 35, + 88, 45, 47, 107, 103, 54, 119, 116, 102, 64, 103, 111, 115, 115, 101, 108, 105, 110, 102, 97, 109, 105, + 108, 121, 46, 99, 111, 109, 192] + DECODED_FRAME = [75, 71, 54, 87, 84, 70, 62, 83, 55, 84, 83, 85, 86, 44, 77, 84, 79, 83, 79, 45, 50, 44, 87, 73, 68, + 69, 50, 42, 44, 113, 65, 82, 44, 75, 70, 54, 70, 73, 82, 45, 49, 48, 58, 96, 49, 55, 69, 108, 35, + 88, 45, 47, 107, 103, 54, 119, 116, 102, 64, 103, 111, 115, 115, 101, 108, 105, 110, 102, 97, 109, + 105, 108, 121, 46, 99, 111, 109] + # All other tests only work on python2 if sys.version_info < (3, 0): def setUp(self): """Setup.""" self.test_frames = open(constants.TEST_FRAMES, 'r') self.test_frame = self.test_frames.readlines()[0].strip() + self.kiss_mock = KissMock() def tearDown(self): """Teardown.""" self.test_frames.close() + self.kiss_mock.clear_interface() def test_escape_special_codes_fend(self): """ @@ -55,6 +68,49 @@ class KissUtilTestCase(unittest.TestCase): fesc = apex.kiss.Kiss._Kiss__escape_special_codes([apex.kiss.constants.FESC]) # pylint: disable=E1101 self.assertEqual(fesc, apex.kiss.constants.FESC_TFESC) + def test_read(self): + self.kiss_mock.clear_interface() + self.kiss_mock.add_read_from_interface(self.RAW_FRAME) + translated_frame = self.kiss_mock.read() + self.assertEqual(self.DECODED_FRAME, translated_frame) + + def test_write(self): + self.kiss_mock.clear_interface() + self.kiss_mock.write(self.DECODED_FRAME) + all_raw_frames = self.kiss_mock.get_sent_to_interface() + self.assertEqual(self.RAW_FRAME, all_raw_frames[0]) + + + +class KissMock(apex.kiss.Kiss): + + frame_buffer = [] + + def __init__(self, + strip_df_start=True): + super(KissMock, self).__init__(strip_df_start) + self.read_from_interface = [] + self.sent_to_interface = [] + + def _read_interface(self): + if not len(self.read_from_interface): + return None + raw_frame = self.read_from_interface[0] + del self.read_from_interface[0] + return raw_frame + + def _write_interface(self, data): + self.sent_to_interface.append(data) + + def clear_interface(self): + self.read_from_interface = [] + self.sent_to_interface = [] + + def add_read_from_interface(self, raw_frame): + self.read_from_interface.append(raw_frame) + + def get_sent_to_interface(self): + return self.sent_to_interface if __name__ == '__main__':