def testMergeFrom(self): message = unittest_pb2.TestAllTypes() message.optional_int32 = 1 message.optional_uint32 = 2 source = unittest_pb2.TestEmptyMessage() source.ParseFromString(message.SerializeToString()) message.ClearField('optional_int32') message.optional_int64 = 3 message.optional_uint32 = 4 destination = unittest_pb2.TestEmptyMessage() unknown_fields = destination.UnknownFields() self.assertEqual(0, len(unknown_fields)) destination.ParseFromString(message.SerializeToString()) # ParseFromString clears the message thus unknown fields is invalid. with self.assertRaises(ValueError) as context: len(unknown_fields) self.assertIn('UnknownFields does not exist.', str(context.exception)) unknown_fields = destination.UnknownFields() self.assertEqual(2, len(unknown_fields)) destination.MergeFrom(source) self.assertEqual(4, len(unknown_fields)) # Check that the fields where correctly merged, even stored in the unknown # fields set. message.ParseFromString(destination.SerializeToString()) self.assertEqual(message.optional_int32, 1) self.assertEqual(message.optional_uint32, 2) self.assertEqual(message.optional_int64, 3)
def testMergeFrom(self): message = unittest_pb2.TestAllTypes() message.optional_int32 = 1 message.optional_uint32 = 2 source = unittest_pb2.TestEmptyMessage() source.ParseFromString(message.SerializeToString()) message.ClearField('optional_int32') message.optional_int64 = 3 message.optional_uint32 = 4 destination = unittest_pb2.TestEmptyMessage() unknown_field_set = unknown_fields.UnknownFieldSet(destination) self.assertEqual(0, len(unknown_field_set)) destination.ParseFromString(message.SerializeToString()) self.assertEqual(0, len(unknown_field_set)) unknown_field_set = unknown_fields.UnknownFieldSet(destination) self.assertEqual(2, len(unknown_field_set)) destination.MergeFrom(source) self.assertEqual(2, len(unknown_field_set)) # Check that the fields where correctly merged, even stored in the unknown # fields set. message.ParseFromString(destination.SerializeToString()) self.assertEqual(message.optional_int32, 1) self.assertEqual(message.optional_uint32, 2) self.assertEqual(message.optional_int64, 3)
def setUp(self): self.descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR self.all_fields = unittest_pb2.TestAllTypes() test_util.SetAllFields(self.all_fields) self.all_fields_data = self.all_fields.SerializeToString() self.empty_message = unittest_pb2.TestEmptyMessage() self.empty_message.ParseFromString(self.all_fields_data)
def testSubUnknownFields(self): message = unittest_pb2.TestAllTypes() message.optionalgroup.a = 123 destination = unittest_pb2.TestEmptyMessage() destination.ParseFromString(message.SerializeToString()) sub_unknown_fields = destination.UnknownFields()[0].data self.assertEqual(1, len(sub_unknown_fields)) self.assertEqual(sub_unknown_fields[0].data, 123) destination.Clear() with self.assertRaises(ValueError) as context: len(sub_unknown_fields) self.assertIn('UnknownFields does not exist.', str(context.exception)) with self.assertRaises(ValueError) as context: # pylint: disable=pointless-statement sub_unknown_fields[0] self.assertIn('UnknownFields does not exist.', str(context.exception)) message.Clear() message.optional_uint32 = 456 nested_message = unittest_pb2.NestedTestAllTypes() nested_message.payload.optional_nested_message.ParseFromString( message.SerializeToString()) unknown_fields = ( nested_message.payload.optional_nested_message.UnknownFields()) self.assertEqual(unknown_fields[0].data, 456) nested_message.ClearField('payload') self.assertEqual(unknown_fields[0].data, 456) unknown_fields = ( nested_message.payload.optional_nested_message.UnknownFields()) self.assertEqual(0, len(unknown_fields))
def testSubUnknownFields(self): message = unittest_pb2.TestAllTypes() message.optionalgroup.a = 123 destination = unittest_pb2.TestEmptyMessage() destination.ParseFromString(message.SerializeToString()) sub_unknown_fields = unknown_fields.UnknownFieldSet( destination)[0].data self.assertEqual(1, len(sub_unknown_fields)) self.assertEqual(sub_unknown_fields[0].data, 123) destination.Clear() self.assertEqual(1, len(sub_unknown_fields)) self.assertEqual(sub_unknown_fields[0].data, 123) message.Clear() message.optional_uint32 = 456 nested_message = unittest_pb2.NestedTestAllTypes() nested_message.payload.optional_nested_message.ParseFromString( message.SerializeToString()) unknown_field_set = unknown_fields.UnknownFieldSet( nested_message.payload.optional_nested_message) self.assertEqual(unknown_field_set[0].data, 456) nested_message.ClearField('payload') self.assertEqual(unknown_field_set[0].data, 456) unknown_field_set = unknown_fields.UnknownFieldSet( nested_message.payload.optional_nested_message) self.assertEqual(0, len(unknown_field_set))
def testEquals(self): message = unittest_pb2.TestEmptyMessage() message.ParseFromString(self.all_fields_data) self.assertEqual(self.empty_message, message) self.all_fields.ClearField('optional_string') message.ParseFromString(self.all_fields.SerializeToString()) self.assertNotEqual(self.empty_message, message)
def testMergeFrom(self): message = unittest_pb2.TestAllTypes() message.optional_int32 = 1 message.optional_uint32 = 2 source = unittest_pb2.TestEmptyMessage() source.ParseFromString(message.SerializeToString()) message.ClearField('optional_int32') message.optional_int64 = 3 message.optional_uint32 = 4 destination = unittest_pb2.TestEmptyMessage() destination.ParseFromString(message.SerializeToString()) unknown_fields = destination._unknown_fields[:] destination.MergeFrom(source) self.assertEqual(unknown_fields + source._unknown_fields, destination._unknown_fields)
def testUnknownField(self): message = unittest_pb2.TestAllTypes() message.optional_int32 = 123 destination = unittest_pb2.TestEmptyMessage() destination.ParseFromString(message.SerializeToString()) unknown_field = unknown_fields.UnknownFieldSet(destination)[0] destination.Clear() self.assertEqual(unknown_field.data, 123)
def setUp(self): self.descriptor = unittest_pb2.TestAllTypes.DESCRIPTOR self.all_fields = unittest_pb2.TestAllTypes() test_util.SetAllFields(self.all_fields) self.all_fields_data = self.all_fields.SerializeToString() self.empty_message = unittest_pb2.TestEmptyMessage() self.empty_message.ParseFromString(self.all_fields_data) if api_implementation.Type() != 'cpp': # _unknown_fields is an implementation detail. self.unknown_fields = self.empty_message._unknown_fields
def testUnknownField(self): message = unittest_pb2.TestAllTypes() message.optional_int32 = 123 destination = unittest_pb2.TestEmptyMessage() destination.ParseFromString(message.SerializeToString()) unknown_field = destination.UnknownFields()[0] destination.Clear() with self.assertRaises(ValueError) as context: unknown_field.data # pylint: disable=pointless-statement self.assertIn('The parent message might be cleared.', str(context.exception))
def testCopyFrom(self): message = unittest_pb2.TestEmptyMessage() message.CopyFrom(self.empty_message) self.assertEqual(self.unknown_fields, message._unknown_fields)
def testCopyFrom(self): message = unittest_pb2.TestEmptyMessage() message.CopyFrom(self.empty_message) self.assertEqual(message.SerializeToString(), self.all_fields_data)
def testUnknownFieldPrinting(self): populated = unittest_pb2.TestAllTypes() test_util.SetAllNonLazyFields(populated) empty = unittest_pb2.TestEmptyMessage() empty.ParseFromString(populated.SerializeToString()) self.assertEqual(str(empty), '')