1# Protocol Buffers - Google's data interchange format 2# Copyright 2008 Google Inc. All rights reserved. 3# 4# Use of this source code is governed by a BSD-style 5# license that can be found in the LICENSE file or at 6# https://developers.google.com/open-source/licenses/bsd 7 8"""Tests for google.protobuf.internal.keywords.""" 9 10import unittest 11 12 13from google.protobuf.internal import more_messages_pb2 14from google.protobuf import descriptor_pool 15 16 17class KeywordsConflictTest(unittest.TestCase): 18 19 def setUp(self): 20 super(KeywordsConflictTest, self).setUp() 21 self.pool = descriptor_pool.Default() 22 23 def testMessage(self): 24 message = getattr(more_messages_pb2, 'class')() 25 message.int_field = 123 26 self.assertEqual(message.int_field, 123) 27 des = self.pool.FindMessageTypeByName('google.protobuf.internal.class') 28 self.assertEqual(des.name, 'class') 29 30 def testNestedMessage(self): 31 message = getattr(more_messages_pb2, 'class')() 32 message.nested_message.field = 234 33 self.assertEqual(message.nested_message.field, 234) 34 des = self.pool.FindMessageTypeByName('google.protobuf.internal.class.try') 35 self.assertEqual(des.name, 'try') 36 37 def testField(self): 38 message = getattr(more_messages_pb2, 'class')() 39 setattr(message, 'if', 123) 40 setattr(message, 'as', 1) 41 self.assertEqual(getattr(message, 'if'), 123) 42 self.assertEqual(getattr(message, 'as'), 1) 43 44 def testEnum(self): 45 class_ = getattr(more_messages_pb2, 'class') 46 message = class_() 47 # Normal enum value. 48 message.enum_field = more_messages_pb2.default 49 self.assertEqual(message.enum_field, more_messages_pb2.default) 50 # Top level enum value. 51 message.enum_field = getattr(more_messages_pb2, 'else') 52 self.assertEqual(message.enum_field, 1) 53 # Nested enum value 54 message.nested_enum_field = getattr(class_, 'True') 55 self.assertEqual(message.nested_enum_field, 1) 56 57 def testExtension(self): 58 message = getattr(more_messages_pb2, 'class')() 59 # Top level extension 60 extension1 = getattr(more_messages_pb2, 'continue') 61 message.Extensions[extension1] = 456 62 self.assertEqual(message.Extensions[extension1], 456) 63 # None top level extension 64 extension2 = getattr(more_messages_pb2.ExtendClass, 'return') 65 message.Extensions[extension2] = 789 66 self.assertEqual(message.Extensions[extension2], 789) 67 68 def testExtensionForNestedMessage(self): 69 message = getattr(more_messages_pb2, 'class')() 70 extension = getattr(more_messages_pb2, 'with') 71 message.nested_message.Extensions[extension] = 999 72 self.assertEqual(message.nested_message.Extensions[extension], 999) 73 74 def TestFullKeywordUsed(self): 75 message = more_messages_pb2.TestFullKeyword() 76 message.field2.int_field = 123 77 78 79if __name__ == '__main__': 80 unittest.main() 81