Fix bug in GeneratedBuilder.MergeFrom
diff --git a/src/ProtocolBuffers.Test/GeneratedMessageTest.cs b/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
index feba6e3..f0be393 100644
--- a/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
+++ b/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
@@ -287,5 +287,29 @@
).BuildPartial();
Assert.IsTrue(message.IsInitialized);
}
+
+ [Test]
+ public void TestOptimizedForSizeMergeUsesAllFieldsFromTarget() {
+ TestOptimizedForSize withFieldSet = new TestOptimizedForSize.Builder { I = 10 }.Build();
+ TestOptimizedForSize.Builder builder = new TestOptimizedForSize.Builder();
+ builder.MergeFrom(withFieldSet);
+ TestOptimizedForSize built = builder.Build();
+ Assert.AreEqual(10, built.I);
+ }
+
+ [Test]
+ public void UninitializedExtensionInOptimizedForSizeMakesMessageUninitialized() {
+ TestOptimizedForSize.Builder builder = new TestOptimizedForSize.Builder();
+ builder.SetExtension(TestOptimizedForSize.TestExtension2,
+ new TestRequiredOptimizedForSize.Builder().BuildPartial());
+ Assert.IsFalse(builder.IsInitialized);
+ Assert.IsFalse(builder.BuildPartial().IsInitialized);
+
+ builder = new TestOptimizedForSize.Builder();
+ builder.SetExtension(TestOptimizedForSize.TestExtension2,
+ new TestRequiredOptimizedForSize.Builder { X = 10 }.BuildPartial());
+ Assert.IsTrue(builder.IsInitialized);
+ Assert.IsTrue(builder.BuildPartial().IsInitialized);
+ }
}
}