From 642a8140c88dfb61f5f4812fc179e4f42beb4978 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Tue, 27 Jan 2009 12:25:21 +0000 Subject: Setters/adders now throw ArgumentNullException appropriately. --- src/ProtocolBuffers.Test/ReflectionTester.cs | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/ProtocolBuffers.Test/ReflectionTester.cs') diff --git a/src/ProtocolBuffers.Test/ReflectionTester.cs b/src/ProtocolBuffers.Test/ReflectionTester.cs index 889b2f6b..767c8cc9 100644 --- a/src/ProtocolBuffers.Test/ReflectionTester.cs +++ b/src/ProtocolBuffers.Test/ReflectionTester.cs @@ -810,5 +810,37 @@ namespace Google.ProtocolBuffers { Assert.AreEqual("524", message[f("repeated_string_piece"), 1]); Assert.AreEqual("525", message[f("repeated_cord"), 1]); } + + /// + /// Verifies that the reflection setters for the given Builder object throw an + /// ArgumentNullException if they are passed a null value. + /// + public void AssertReflectionSettersRejectNull(IBuilder builder) { + TestUtil.AssertArgumentNullException(() => builder[f("optional_string")] = null); + TestUtil.AssertArgumentNullException(() => builder[f("optional_bytes")] = null); + TestUtil.AssertArgumentNullException(() => builder[f("optional_nested_enum")] = null); + TestUtil.AssertArgumentNullException(() => builder[f("optional_nested_message")] = null); + TestUtil.AssertArgumentNullException(() => builder[f("optional_nested_message")] = null); + TestUtil.AssertArgumentNullException(() => builder.WeakAddRepeatedField(f("repeated_string"), null)); + TestUtil.AssertArgumentNullException(() => builder.WeakAddRepeatedField(f("repeated_bytes"), null)); + TestUtil.AssertArgumentNullException(() => builder.WeakAddRepeatedField(f("repeated_nested_enum"), null)); + TestUtil.AssertArgumentNullException(() => builder.WeakAddRepeatedField(f("repeated_nested_message"), null)); + } + + /// + /// Verifies that the reflection repeated setters for the given Builder object throw an + /// ArgumentNullException if they are passed a null value. + /// + public void AssertReflectionRepeatedSettersRejectNull(IBuilder builder) { + builder.WeakAddRepeatedField(f("repeated_string"), "one"); + TestUtil.AssertArgumentNullException(() => builder.SetRepeatedField(f("repeated_string"), 0, null)); + builder.WeakAddRepeatedField(f("repeated_bytes"), TestUtil.ToBytes("one")); + TestUtil.AssertArgumentNullException(() => builder.SetRepeatedField(f("repeated_bytes"), 0, null)); + builder.WeakAddRepeatedField(f("repeated_nested_enum"), nestedBaz); + TestUtil.AssertArgumentNullException(() => builder.SetRepeatedField(f("repeated_nested_enum"), 0, null)); + builder.WeakAddRepeatedField(f("repeated_nested_message"), + new TestAllTypes.Types.NestedMessage.Builder { Bb = 218 }.Build()); + TestUtil.AssertArgumentNullException(() => builder.SetRepeatedField(f("repeated_nested_message"), 0, null)); + } } } -- cgit v1.2.3