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())
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)
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, [])
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)
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)
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)
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)
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)
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)
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__())
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])
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)
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, [])
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))
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)
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())
def test_get_package(self): package_type = 0x01 package = test_package(7) dp = RealtimeDataPoint(package_type, package) self.assertEqual(package, dp.get_package())