Setters/adders now throw ArgumentNullException appropriately.
diff --git a/src/ProtocolBuffers.Test/GeneratedMessageTest.cs b/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
index d97b0ed..5d0a929 100644
--- a/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
+++ b/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
@@ -103,7 +103,20 @@
TestAllTypes message = builder.Build();
TestUtil.AssertAllFieldsSet(message);
}
-
+
+ [Test]
+ public void SettersRejectNull() {
+ TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
+ TestUtil.AssertArgumentNullException(() => builder.SetOptionalString(null));
+ TestUtil.AssertArgumentNullException(() => builder.SetOptionalBytes(null));
+ TestUtil.AssertArgumentNullException(() => builder.SetOptionalNestedMessage((TestAllTypes.Types.NestedMessage)null));
+ TestUtil.AssertArgumentNullException(() => builder.SetOptionalNestedMessage((TestAllTypes.Types.NestedMessage.Builder)null));
+ TestUtil.AssertArgumentNullException(() => builder.AddRepeatedString(null));
+ TestUtil.AssertArgumentNullException(() => builder.AddRepeatedBytes(null));
+ TestUtil.AssertArgumentNullException(() => builder.AddRepeatedNestedMessage((TestAllTypes.Types.NestedMessage)null));
+ TestUtil.AssertArgumentNullException(() => builder.AddRepeatedNestedMessage((TestAllTypes.Types.NestedMessage.Builder)null));
+ }
+
[Test]
public void RepeatedSetters() {
TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
@@ -131,6 +144,18 @@
}
[Test]
+ public void RepeatedAppendRejectsNull() {
+ TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
+
+ ForeignMessage foreignMessage = ForeignMessage.CreateBuilder().SetC(12).Build();
+ TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignMessage(new[] { foreignMessage, null }));
+ TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignMessage(null));
+ TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignEnum(null));
+ TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedString(new[] { "one", null }));
+ TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedBytes(new[] { TestUtil.ToBytes("one"), null }));
+ }
+
+ [Test]
public void SettingForeignMessageUsingBuilder() {
TestAllTypes message = TestAllTypes.CreateBuilder()
// Pass builder for foreign message instance.
@@ -182,6 +207,11 @@
}
[Test]
+ public void ReflectionSettersRejectNull() {
+ TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
+ reflectionTester.AssertReflectionSettersRejectNull(builder);
+ }
+ [Test]
public void ReflectionRepeatedSetters() {
TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
reflectionTester.SetAllFieldsViaReflection(builder);
@@ -191,6 +221,12 @@
}
[Test]
+ public void TestReflectionRepeatedSettersRejectNull() {
+ TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
+ reflectionTester.AssertReflectionRepeatedSettersRejectNull(builder);
+ }
+
+ [Test]
public void ReflectionDefaults() {
reflectionTester.AssertClearViaReflection(TestAllTypes.DefaultInstance);
reflectionTester.AssertClearViaReflection(TestAllTypes.CreateBuilder().Build());
@@ -238,6 +274,12 @@
}
[Test]
+ public void ExtensionReflectionSettersRejectNull() {
+ TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
+ extensionsReflectionTester.AssertReflectionSettersRejectNull(builder);
+ }
+
+ [Test]
public void ExtensionReflectionRepeatedSetters() {
TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
extensionsReflectionTester.SetAllFieldsViaReflection(builder);
@@ -247,6 +289,12 @@
}
[Test]
+ public void ExtensionReflectionRepeatedSettersRejectNull() {
+ TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
+ extensionsReflectionTester.AssertReflectionRepeatedSettersRejectNull(builder);
+ }
+
+ [Test]
public void ExtensionReflectionDefaults() {
extensionsReflectionTester.AssertClearViaReflection(TestAllExtensions.DefaultInstance);
extensionsReflectionTester.AssertClearViaReflection(TestAllExtensions.CreateBuilder().Build());
@@ -265,6 +313,18 @@
.GetExtensionCount(UnitTestProtoFile.RepeatedInt32Extension));
}
+ /* Reinstate this test in the commit where it's fixed...
+ [Test]
+ public void ExtensionMergeFrom() {
+ TestAllExtensions original = TestAllExtensions.CreateBuilder()
+ .SetExtension(UnitTestProtoFile.OptionalInt32Extension, 1).Build();
+ TestAllExtensions merged =
+ TestAllExtensions.CreateBuilder().MergeFrom(original).Build();
+ Assert.IsTrue((merged.HasExtension(UnitTestProtoFile.OptionalInt32Extension)));
+ Assert.AreEqual(1, (int)merged.GetExtension(UnitTestProtoFile.OptionalInt32Extension));
+ }
+ */
+
/* Removed multiple files option for the moment
[Test]
public void MultipleFilesOption() {