Completed
Push — master ( f7fe46...a34de0 )
by Jeffrey
03:38
created

KissUtilTestCase.test_write()   A

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 5
rs 9.4285
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
4
"""Tests for KISS Util Module."""
5
6
# These imports are for python3 compatability inside python2
7
from __future__ import absolute_import
8
from __future__ import division
9
from __future__ import print_function
10
11
import array
12
import sys
13
import unittest
14
15
import apex.kiss
16
import apex.kiss.constants
17
import apex.kiss.util
18
from . import constants
19
20
__author__ = 'Jeffrey Phillips Freeman (WI2ARD)'
21
__maintainer__ = "Jeffrey Phillips Freeman (WI2ARD)"
22
__email__ = "[email protected]"
23
__license__ = 'Apache License, Version 2.0'
24
__copyright__ = 'Copyright 2016, Syncleus, Inc. and contributors'
25
__credits__ = []
26
27
28
# pylint: disable=R0904,C0103
29
class KissUtilTestCase(unittest.TestCase):
30
31
    """Test class for KISS Python Module."""
32
33
    # 'KG6WTF>S7TSUV,MTOSO-2,WIDE2*,qAR,KF6FIR-10:`17El#X-/[email protected]'
34
    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,
35
                 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,
36
                 88, 45, 47, 107, 103, 54, 119, 116, 102, 64, 103, 111, 115, 115, 101, 108, 105, 110, 102, 97, 109, 105,
37
                 108, 121, 46, 99, 111, 109, 192]
38
    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,
39
                     69, 50, 42, 44, 113, 65, 82, 44, 75, 70, 54, 70, 73, 82, 45, 49, 48, 58, 96, 49, 55, 69, 108, 35,
40
                     88, 45, 47, 107, 103, 54, 119, 116, 102, 64, 103, 111, 115, 115, 101, 108, 105, 110, 102, 97, 109,
41
                     105, 108, 121, 46, 99, 111, 109]
42
43
    # All other tests only work on python2
44
    if sys.version_info < (3, 0):
45
        def setUp(self):
46
            """Setup."""
47
            self.test_frames = open(constants.TEST_FRAMES, 'r')
48
            self.test_frame = self.test_frames.readlines()[0].strip()
49
            self.kiss_mock = KissMock()
50
51
        def tearDown(self):
52
            """Teardown."""
53
            self.test_frames.close()
54
            self.kiss_mock.clear_interface()
55
56
        def test_escape_special_codes_fend(self):
57
            """
58
            Tests `kiss.util.escape_special_codes` util function.
59
            """
60
            # fend = apex.kiss.util.escape_special_codes(apex.kiss.constants.FEND)
61
            fend = apex.kiss.Kiss._Kiss__escape_special_codes([apex.kiss.constants.FEND])  # pylint: disable=E1101
62
            self.assertEqual(fend, apex.kiss.constants.FESC_TFEND)
63
64
        def test_escape_special_codes_fesc(self):
65
            """
66
            Tests `kiss.util.escape_special_codes` util function.
67
            """
68
            fesc = apex.kiss.Kiss._Kiss__escape_special_codes([apex.kiss.constants.FESC])  # pylint: disable=E1101
69
            self.assertEqual(fesc, apex.kiss.constants.FESC_TFESC)
70
71
        def test_read(self):
72
            self.kiss_mock.clear_interface()
73
            self.kiss_mock.add_read_from_interface(self.RAW_FRAME)
74
            translated_frame = self.kiss_mock.read()
75
            self.assertEqual(self.DECODED_FRAME, translated_frame)
76
77
        def test_write(self):
78
            self.kiss_mock.clear_interface()
79
            self.kiss_mock.write(self.DECODED_FRAME)
80
            all_raw_frames = self.kiss_mock.get_sent_to_interface()
81
            self.assertEqual(self.RAW_FRAME, all_raw_frames[0])
82
83
84
85
class KissMock(apex.kiss.Kiss):
86
87
    frame_buffer = []
88
89
    def __init__(self,
90
                 strip_df_start=True):
91
        super(KissMock, self).__init__(strip_df_start)
92
        self.read_from_interface = []
93
        self.sent_to_interface = []
94
95
    def _read_interface(self):
96
        if not len(self.read_from_interface):
97
            return None
98
        raw_frame = self.read_from_interface[0]
99
        del self.read_from_interface[0]
100
        return raw_frame
101
102
    def _write_interface(self, data):
103
        self.sent_to_interface.append(data)
104
105
    def clear_interface(self):
106
        read_from_interface = []
107
        sent_to_interface = []
108
109
    def add_read_from_interface(self, raw_frame):
110
        self.read_from_interface.append(raw_frame)
111
112
    def get_sent_to_interface(self):
113
        return self.sent_to_interface
114
115
116
if __name__ == '__main__':
117
    unittest.main()
118