예제 #1
0
    def testSerializeMessageSetWireFormatUnknownExtension(self):
        # Create a message using the message set wire format with an unknown
        # message.
        raw = unittest_mset_pb2.RawMessageSet()

        # Add an unknown extension.
        item = raw.item.add()
        item.type_id = 98218603
        message1 = message_set_extensions_pb2.TestMessageSetExtension1()
        message1.i = 12345
        item.message = message1.SerializeToString()

        serialized = raw.SerializeToString()

        # Parse message using the message set wire format.
        proto = message_set_extensions_pb2.TestMessageSet()
        proto.MergeFromString(serialized)

        unknown_fields = proto.UnknownFields()
        self.assertEqual(len(unknown_fields), 1)
        # Unknown field should have wire format data which can be parsed back to
        # original message.
        self.assertEqual(unknown_fields[0].field_number, item.type_id)
        self.assertEqual(unknown_fields[0].wire_type,
                         wire_format.WIRETYPE_LENGTH_DELIMITED)
        d = unknown_fields[0].data
        message_new = message_set_extensions_pb2.TestMessageSetExtension1()
        message_new.ParseFromString(d)
        self.assertEqual(message1, message_new)

        # Verify that the unknown extension is serialized unchanged
        reserialized = proto.SerializeToString()
        new_raw = unittest_mset_pb2.RawMessageSet()
        new_raw.MergeFromString(reserialized)
        self.assertEqual(raw, new_raw)
예제 #2
0
  def testSerializeMessageSetWireFormatUnknownExtension(self):
    # Create a message using the message set wire format with an unknown
    # message.
    raw = unittest_mset_pb2.RawMessageSet()

    # Add an unknown extension.
    item = raw.item.add()
    item.type_id = 1545009
    message1 = unittest_mset_pb2.TestMessageSetExtension1()
    message1.i = 12345
    item.message = message1.SerializeToString()

    serialized = raw.SerializeToString()

    # Parse message using the message set wire format.
    proto = unittest_mset_pb2.TestMessageSet()
    proto.MergeFromString(serialized)

    # Verify that the unknown extension is serialized unchanged
    reserialized = proto.SerializeToString()
    new_raw = unittest_mset_pb2.RawMessageSet()
    new_raw.MergeFromString(reserialized)
    self.assertEqual(raw, new_raw)