aboutsummaryrefslogtreecommitdiffhomepage
path: root/python/google/protobuf/internal/reflection_test.py
diff options
context:
space:
mode:
authorGravatar kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d>2010-07-27 21:19:59 +0000
committerGravatar kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d>2010-07-27 21:19:59 +0000
commit27028bcb978061a38f2e4c53629a048263f8b7a8 (patch)
tree7d7ca3b867ebcb9b13c3a7cf973237a2fe1d5646 /python/google/protobuf/internal/reflection_test.py
parent0c293def6c23cc73b28e0adb55f70b1f47382563 (diff)
Fix issue 208.
Diffstat (limited to 'python/google/protobuf/internal/reflection_test.py')
-rwxr-xr-xpython/google/protobuf/internal/reflection_test.py30
1 files changed, 28 insertions, 2 deletions
diff --git a/python/google/protobuf/internal/reflection_test.py b/python/google/protobuf/internal/reflection_test.py
index 922855b6..54eeebe6 100755
--- a/python/google/protobuf/internal/reflection_test.py
+++ b/python/google/protobuf/internal/reflection_test.py
@@ -200,6 +200,32 @@ class ReflectionTest(unittest.TestCase):
unittest_pb2.ForeignMessage(c=12)],
list(proto.repeated_foreign_message))
+ def testConstructorTypeError(self):
+ self.assertRaises(TypeError, unittest_pb2.TestAllTypes, optional_int32="foo")
+ self.assertRaises(TypeError, unittest_pb2.TestAllTypes, optional_string=1234)
+ self.assertRaises(TypeError, unittest_pb2.TestAllTypes, optional_nested_message=1234)
+ self.assertRaises(TypeError, unittest_pb2.TestAllTypes, repeated_int32=1234)
+ self.assertRaises(TypeError, unittest_pb2.TestAllTypes, repeated_int32=["foo"])
+ self.assertRaises(TypeError, unittest_pb2.TestAllTypes, repeated_string=1234)
+ self.assertRaises(TypeError, unittest_pb2.TestAllTypes, repeated_string=[1234])
+ self.assertRaises(TypeError, unittest_pb2.TestAllTypes, repeated_nested_message=1234)
+ self.assertRaises(TypeError, unittest_pb2.TestAllTypes, repeated_nested_message=[1234])
+
+ def testConstructorInvalidatesCachedByteSize(self):
+ message = unittest_pb2.TestAllTypes(optional_int32 = 12)
+ self.assertEquals(2, message.ByteSize())
+
+ message = unittest_pb2.TestAllTypes(
+ optional_nested_message = unittest_pb2.TestAllTypes.NestedMessage())
+ self.assertEquals(3, message.ByteSize())
+
+ message = unittest_pb2.TestAllTypes(repeated_int32 = [12])
+ self.assertEquals(3, message.ByteSize())
+
+ message = unittest_pb2.TestAllTypes(
+ repeated_nested_message = [unittest_pb2.TestAllTypes.NestedMessage()])
+ self.assertEquals(3, message.ByteSize())
+
def testSimpleHasBits(self):
# Test a scalar.
proto = unittest_pb2.TestAllTypes()
@@ -1038,12 +1064,12 @@ class ReflectionTest(unittest.TestCase):
def testMergeFromBug(self):
message1 = unittest_pb2.TestAllTypes()
message2 = unittest_pb2.TestAllTypes()
-
+
# Cause optional_nested_message to be instantiated within message1, even
# though it is not considered to be "present".
message1.optional_nested_message
self.assertFalse(message1.HasField('optional_nested_message'))
-
+
# Merge into message2. This should not instantiate the field is message2.
message2.MergeFrom(message1)
self.assertFalse(message2.HasField('optional_nested_message'))