def test_serialization(self): for protocol_version in TEST_VERSIONS: context = ConnectionContext(protocol_version=protocol_version) for data_type in Type.__subclasses__(): if data_type in TEST_DATA: test_cases = TEST_DATA[data_type] for test_data in test_cases: packet_buffer = PacketBuffer() data_type.send_with_context( test_data, packet_buffer, context) packet_buffer.reset_cursor() deserialized = data_type.read_with_context( packet_buffer, context) if data_type is FixedPointInteger: self.assertAlmostEqual( test_data, deserialized, delta=1.0/32.0) elif data_type is Angle: self.assertAlmostEqual(test_data % 360, deserialized, delta=360/256) elif data_type is Float or data_type is Double: self.assertAlmostEqual(test_data, deserialized, 3) else: self.assertEqual(test_data, deserialized)
def test_exceptions(self): base_type = Type() with self.assertRaises(NotImplementedError): base_type.read(None) with self.assertRaises(NotImplementedError): base_type.send(None, None) empty_socket = PacketBuffer() with self.assertRaises(Exception): VarInt.read(empty_socket)
def test_serialization(self): for data_type in Type.__subclasses__(): if data_type in TEST_DATA: test_cases = TEST_DATA[data_type] for test_data in test_cases: packet_buffer = PacketBuffer() data_type.send(test_data, packet_buffer) packet_buffer.reset_cursor() deserialized = data_type.read(packet_buffer) if data_type is Float or data_type is Double: self.assertAlmostEquals(test_data, deserialized, 3) else: self.assertEqual(test_data, deserialized)