• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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