Esempio n. 1
0
 def test_get_package(self):
     package_type = 0x0f
     package = test_package(2)
     dp = StorageDataPoint(package_type, package)
     self.assertEqual(package, dp.get_package())
     package_type = 0x09
     package = test_package(4)
     dp = StorageDataPoint(package_type, package)
     self.assertEqual(package, dp.get_package())
Esempio n. 2
0
    def test_init_package_length(self):
        package_type = 0x01

        # right length
        package = test_package(7)
        RealtimeDataPoint(package_type, package)

        # wrong length
        package = test_package(6)
        self.assertRaisesRegex(ValueError, 'package length', RealtimeDataPoint,
                               package_type, package)
Esempio n. 3
0
    def test_init_package_type(self):
        # right type
        package_type = 0x0f
        package = test_package(2)
        StorageDataPoint(package_type, package)
        package_type = 0x09
        package = test_package(4)
        StorageDataPoint(package_type, package)

        # wrong type
        package_type = 0x00
        self.assertRaisesRegex(ValueError, 'package type', StorageDataPoint,
                               package_type, [])
Esempio n. 4
0
 def test_get_storage_data(self, MockSerial):
     package_type = 0x0f
     package = test_package(6)
     data = CMS50Dplus.encode_package(package_type, package) * 10
     self.oxi.connection.read.side_effect = test_stream(data)
     for storage_data_point in self.oxi.get_storage_data():
         self.assertIsInstance(storage_data_point, StorageDataPoint)
     package_type = 0x09
     package = test_package(4)
     data = CMS50Dplus.encode_package(package_type, package) * 10
     self.oxi.connection.read.side_effect = test_stream(data)
     for storage_data_point in self.oxi.get_storage_data():
         self.assertIsInstance(storage_data_point, StorageDataPoint)
Esempio n. 5
0
    def test_pi(self):
        # without pi support
        package_type = 0x0f
        package = test_package(2)
        dp = StorageDataPoint(package_type, package)
        self.assertEqual(dp.pi, '-')

        # with pi support
        package_type = 0x09
        package = test_package(4)
        for value in range(0, 65536):
            package[2] = 0x00 | value & 0x00ff
            package[3] = 0x00 | (value & 0xff00) >> 8
            dp = StorageDataPoint(package_type, package)
            self.assertEqual(dp.pi, value)
Esempio n. 6
0
 def test_get_packages_amount(self, MockSerial):
     package_type = 0x01
     package = test_package()
     data = CMS50Dplus.encode_package(package_type, package) * 10
     for amount in range(1, 11):
         self.oxi.connection.read.side_effect = test_stream(data)
         self.assertEqual(len(list(self.oxi.get_packages(amount))), amount)
Esempio n. 7
0
 def test_get_realtime_data(self, MockSerial):
     package_type = 0x01
     package = test_package(7)
     data = CMS50Dplus.encode_package(package_type, package) * 10
     self.oxi.connection.read.side_effect = test_stream(data)
     for realtime_data_point in self.oxi.get_realtime_data():
         self.assertIsInstance(realtime_data_point, RealtimeDataPoint)
Esempio n. 8
0
 def test_encode_package_decode_package(self):
     package_type = 0x00
     for run in range(0, 10):
         original_package = test_package()
         packets = CMS50Dplus.encode_package(package_type, original_package)
         _, decoded_package = CMS50Dplus.decode_package(packets)
         self.assertEqual(decoded_package, original_package)
Esempio n. 9
0
 def test_get_packages_yields(self, MockSerial):
     package_type = 0x01
     package = test_package()
     data = CMS50Dplus.encode_package(package_type, package) * 10
     self.oxi.connection.read.side_effect = test_stream(data)
     for decoded_package_type, decoded_package in self.oxi.get_packages():
         self.assertEqual(decoded_package_type, package_type)
         self.assertEqual(decoded_package, package)
Esempio n. 10
0
    def test_pi_invalid(self):
        # without pi support
        package_type = 0x0f
        package = test_package(2)
        dp = StorageDataPoint(package_type, package)
        self.assertEqual(dp.pi_invalid, '-')

        # with pi support
        package_type = 0x09
        package = test_package(4)
        for value in [0, 65535]:
            package[2] = 0x00 | value & 0x00ff
            package[3] = 0x00 | (value & 0xff00) >> 8
            dp = StorageDataPoint(package_type, package)
            self.assertEqual(dp.pi_invalid, bool(value))
            self.assertEqual(dp.get_package(), package)
            self.assertEqual(dp.__repr__(), eval(dp.__repr__()).__repr__())
Esempio n. 11
0
 def test_get_packets_yields(self, MockSerial):
     packets_list = []
     for packets in range(0, 10):
         data = CMS50Dplus.encode_package(0x00, test_package())
         packets_list.append(data)
     self.oxi.connection.read.side_effect = test_stream(
         [byte for packets in packets_list for byte in packets])
     for idx, packets in enumerate(self.oxi.get_packets()):
         self.assertEqual(packets, packets_list[idx])
Esempio n. 12
0
    def test_init_package_length(self):
        # right length
        package_type = 0x0f
        package = test_package(2)
        StorageDataPoint(package_type, package)
        package_type = 0x09
        package = test_package(4)
        StorageDataPoint(package_type, package)

        # wrong length
        package_type = 0x0f
        package = test_package(4)
        self.assertRaisesRegex(ValueError, 'package length', StorageDataPoint,
                               package_type, package)
        package_type = 0x09
        package = test_package(2)
        self.assertRaisesRegex(ValueError, 'package length', StorageDataPoint,
                               package_type, package)
Esempio n. 13
0
    def test_init_package_type(self):
        package = test_package(7)

        # right type
        package_type = 0x01
        RealtimeDataPoint(package_type, package)

        # wrong type
        package_type = 0x00
        self.assertRaisesRegex(ValueError, 'package type', RealtimeDataPoint,
                               package_type, [])
Esempio n. 14
0
    def test_get_packets_amount(self, MockSerial):
        # right amounts
        data = CMS50Dplus.encode_package(0x00, test_package()) * 10
        for amount in range(1, 11):
            self.oxi.connection.read.side_effect = test_stream(data)
            self.assertEqual(len(list(self.oxi.get_packets(amount))), amount)

        # too few packets
        for amount in range(11, 13):
            self.oxi.connection.read.side_effect = test_stream(data)
            self.assertRaisesRegex(ValueError, 'too few packets', list,
                                   self.oxi.get_packets(amount))
Esempio n. 15
0
    def test_get_packets_keepalive(self, MockSerial):
        data = CMS50Dplus.encode_package(0x00, test_package()) * 10
        self.oxi.connection.read.side_effect = test_stream(data)
        self.oxi.keepalive_interval = datetime.timedelta(milliseconds=5)

        start = datetime.datetime.now()
        list(self.oxi.get_packets())
        end = datetime.datetime.now()
        test_interval = end - start

        self.assertAlmostEqual(self.oxi.connection.write.call_count,
                               test_interval / self.oxi.keepalive_interval,
                               delta=2)
Esempio n. 16
0
    def test_get_packets_packet_length(self, MockSerial):
        # too few bytes
        data = CMS50Dplus.encode_package(0x00, test_package())
        for length in range(0, 3):
            byte_list = data[:length] * 10
            self.oxi.connection.read.side_effect = test_stream(byte_list)
            self.assertRaisesRegex(ValueError, 'too few bytes', next,
                                   self.oxi.get_packets())

        # valid packets length
        data = CMS50Dplus.encode_package(0x00, test_package())
        for length in range(3, 10):
            byte_list = data[:length] * 10
            self.oxi.connection.read.side_effect = test_stream(byte_list)
            for packets in self.oxi.get_packets():
                self.assertEqual(packets, byte_list[:length])

        # too many bytes
        data = CMS50Dplus.encode_package(0x00, test_package()) + [0x80] * 3
        for length in range(10, 13):
            byte_list = data[:length] * 10
            self.oxi.connection.read.side_effect = test_stream(byte_list)
            self.assertRaisesRegex(ValueError, 'too many bytes', next,
                                   self.oxi.get_packets())
Esempio n. 17
0
 def test_get_package(self):
     package_type = 0x01
     package = test_package(7)
     dp = RealtimeDataPoint(package_type, package)
     self.assertEqual(package, dp.get_package())