def test_codec_vint(self): expected_pb = b'\x08\x96\x01' raw_obj = 150 self.assertEqual(minipb.encode('V', raw_obj), expected_pb) self.assertEqual(minipb.decode('V', expected_pb)[0], raw_obj)
def test_codec_vint_field(self): expected_pb = b'\x80\x01\x01' fields = (1,) # Field 16 requires 2 bytes self.assertEqual(minipb.encode('x15V', *fields), expected_pb) self.assertEqual(minipb.decode('x15V', expected_pb), fields)
def test_codec_vint_2sc_negative(self): expected_pb = b'\x08\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01' fields = (-1,) self.assertEqual(minipb.encode('t', *fields), expected_pb) self.assertEqual(minipb.decode('t', expected_pb), fields)
def test_codec_nested_message(self): expected_pb = b'\x1a\x03\x08\x96\x01' raw_obj = (150, ) self.assertEqual(minipb.encode('x2[V]', raw_obj), expected_pb) self.assertEqual(minipb.decode('x2[V]', expected_pb)[0], raw_obj)
def test_codec_fixed(self): expected_pb = b'\r\xff\xff\xff\xff\x15\x01\x00\x00\x00\x1d\x00\x00\x80?!\xcc\xe3# \xfd\xff\xff\xff)\xd2\x02\x96I\x00\x00\x00\x001\x18-DT\xfb!\t@' fields = (-1, 1, 1.0, -12345678900, 1234567890, 3.141592653589793) self.assertEqual(minipb.encode('iIfqQd', *fields), expected_pb) self.assertEqual(minipb.decode('iIfqQd', expected_pb), fields)
def test_codec_packed_repeated_field_double_decode(self): expected_pb = b'\x22\x06\x03\x8e\x02\x9e\xa7\x05' * 2 raw_obj = (3, 270, 86942) * 2 self.assertEqual(minipb.decode('x3#V', expected_pb)[0], raw_obj)
def test_badbehavior_chopped_message_fixed64(self): expected_pb = b'\t\xff\x00' with self.assertRaises(minipb.CodecError) as details: minipb.decode('Q', expected_pb) self.assertIn('Unexpected end of message', details.exception.args[0])
def test_codec_str(self): expected_pb = b'\x12\x07\x74\x65\x73\x74\x69\x6e\x67' raw_obj = 'testing' self.assertEqual(minipb.encode('xU', raw_obj), expected_pb) self.assertEqual(minipb.decode('xU', expected_pb)[0], raw_obj)
def test_badbehavior_chopped_message_vint(self): expected_pb = b'\x08\x96' with self.assertRaises(minipb.CodecError) as details: minipb.decode('V', expected_pb) self.assertIn('Unexpected end of message', details.exception.args[0])
def test_badbehavior_chopped_message_str(self): expected_pb = b'\x12\x07\x74\x65\x73\x74\x69' with self.assertRaises(minipb.CodecError) as details: minipb.decode('xU', expected_pb) self.assertIn('Unexpected end of message', details.exception.args[0])