Пример #1
0
    def testDiscardUnknownFields(self):
        self.empty_message.DiscardUnknownFields()
        self.assertEqual(b'', self.empty_message.SerializeToString())
        # Test message field and repeated message field.
        message = unittest_pb2.TestAllTypes()
        other_message = unittest_pb2.TestAllTypes()
        other_message.optional_string = 'discard'
        message.optional_nested_message.ParseFromString(
            other_message.SerializeToString())
        message.repeated_nested_message.add().ParseFromString(
            other_message.SerializeToString())
        self.assertNotEqual(
            b'', message.optional_nested_message.SerializeToString())
        self.assertNotEqual(
            b'', message.repeated_nested_message[0].SerializeToString())
        message.DiscardUnknownFields()
        self.assertEqual(b'',
                         message.optional_nested_message.SerializeToString())
        self.assertEqual(
            b'', message.repeated_nested_message[0].SerializeToString())

        msg = map_unittest_pb2.TestMap()
        msg.map_int32_all_types[1].optional_nested_message.ParseFromString(
            other_message.SerializeToString())
        msg.map_string_string['1'] = 'test'
        self.assertNotEqual(
            b'', msg.map_int32_all_types[1].optional_nested_message.
            SerializeToString())
        msg.DiscardUnknownFields()
        self.assertEqual(
            b'', msg.map_int32_all_types[1].optional_nested_message.
            SerializeToString())
Пример #2
0
 def testClearReifiedMapField(self):
     msg = map_unittest_pb2.TestMap()
     int32_map = msg.map_int32_int32
     int32_map[123] = 456
     msg.ClearField("map_int32_int32")
     int32_map[111] = 222
     self.assertEqual(0, msg.ByteSize())
Пример #3
0
 def testMapOrderEnforcement(self):
     message = map_unittest_pb2.TestMap()
     for letter in string.ascii_uppercase[13:26]:
         message.map_string_string[letter] = 'dummy'
     for letter in reversed(string.ascii_uppercase[0:13]):
         message.map_string_string[letter] = 'dummy'
     golden = ''.join(
         ('map_string_string {\n  key: "%c"\n  value: "dummy"\n}\n' %
          (letter, ) for letter in string.ascii_uppercase))
     self.CompareToGoldenText(text_format.MessageToString(message), golden)
Пример #4
0
    def testMapOrderSemantics(self):
        golden_lines = self.ReadGolden('map_test_data.txt')
        # The C++ implementation emits defaulted-value fields, while the Python
        # implementation does not.  Adjusting for this is awkward, but it is
        # valuable to test against a common golden file.
        line_blacklist = ('  key: 0\n', '  value: 0\n', '  key: false\n',
                          '  value: false\n')
        golden_lines = [
            line for line in golden_lines if line not in line_blacklist
        ]

        message = map_unittest_pb2.TestMap()
        text_format.ParseLines(golden_lines, message)
        candidate = text_format.MessageToString(message)
        # The Python implementation emits "1.0" for the double value that the C++
        # implementation emits as "1".
        candidate = candidate.replace('1.0', '1', 2)
        self.assertMultiLineEqual(candidate, ''.join(golden_lines))
Пример #5
0
  def testPrintMap(self):
    message = map_unittest_pb2.TestMap()

    message.map_int32_int32[-123] = -456
    message.map_int64_int64[-2**33] = -2**34
    message.map_uint32_uint32[123] = 456
    message.map_uint64_uint64[2**33] = 2**34
    message.map_string_string["abc"] = "123"
    message.map_int32_foreign_message[111].c = 5

    # Maps are serialized to text format using their underlying repeated
    # representation.
    self.CompareToGoldenText(
        text_format.MessageToString(message),
        'map_int32_int32 {\n'
        '  key: -123\n'
        '  value: -456\n'
        '}\n'
        'map_int64_int64 {\n'
        '  key: -8589934592\n'
        '  value: -17179869184\n'
        '}\n'
        'map_uint32_uint32 {\n'
        '  key: 123\n'
        '  value: 456\n'
        '}\n'
        'map_uint64_uint64 {\n'
        '  key: 8589934592\n'
        '  value: 17179869184\n'
        '}\n'
        'map_string_string {\n'
        '  key: "abc"\n'
        '  value: "123"\n'
        '}\n'
        'map_int32_foreign_message {\n'
        '  key: 111\n'
        '  value {\n'
        '    c: 5\n'
        '  }\n'
        '}\n')
Пример #6
0
    def testParseMap(self):
        text = ('map_int32_int32 {\n'
                '  key: -123\n'
                '  value: -456\n'
                '}\n'
                'map_int64_int64 {\n'
                '  key: -8589934592\n'
                '  value: -17179869184\n'
                '}\n'
                'map_uint32_uint32 {\n'
                '  key: 123\n'
                '  value: 456\n'
                '}\n'
                'map_uint64_uint64 {\n'
                '  key: 8589934592\n'
                '  value: 17179869184\n'
                '}\n'
                'map_string_string {\n'
                '  key: "abc"\n'
                '  value: "123"\n'
                '}\n'
                'map_int32_foreign_message {\n'
                '  key: 111\n'
                '  value {\n'
                '    c: 5\n'
                '  }\n'
                '}\n')
        message = map_unittest_pb2.TestMap()
        text_format.Parse(text, message)

        self.assertEqual(-456, message.map_int32_int32[-123])
        self.assertEqual(-2**34, message.map_int64_int64[-2**33])
        self.assertEqual(456, message.map_uint32_uint32[123])
        self.assertEqual(2**34, message.map_uint64_uint64[2**33])
        self.assertEqual("123", message.map_string_string["abc"])
        self.assertEqual(5, message.map_int32_foreign_message[111].c)