From 6c4a2de7df41d66e517568560259b2ab0746b05c Mon Sep 17 00:00:00 2001 From: csharptest Date: Wed, 10 Oct 2012 15:21:38 -0500 Subject: Issue 50: The XML serializer will fail to deserialize a message with empty child message --- .../Compatibility/CompatibilityTests.cs | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src/ProtocolBuffers.Test') diff --git a/src/ProtocolBuffers.Test/Compatibility/CompatibilityTests.cs b/src/ProtocolBuffers.Test/Compatibility/CompatibilityTests.cs index f47a6a52..20189617 100644 --- a/src/ProtocolBuffers.Test/Compatibility/CompatibilityTests.cs +++ b/src/ProtocolBuffers.Test/Compatibility/CompatibilityTests.cs @@ -25,6 +25,40 @@ namespace Google.ProtocolBuffers.Compatibility Assert.AreEqual(lhs, rhs); } + [TestMethod] + public virtual void RoundTripWithEmptyChildMessageSize() + { + SizeMessage1 msg = SizeMessage1.CreateBuilder() + .SetField100(100) + .SetField15(SizeMessage1SubMessage.DefaultInstance) + .BuildPartial(); + byte[] contents = msg.ToByteArray(); + object content = SerializeMessage(msg); + + SizeMessage1 copy = DeserializeMessage(content, SizeMessage1.CreateBuilder(), ExtensionRegistry.Empty).BuildPartial(); + + Assert.AreEqual(msg, copy); + AssertOutputEquals(content, SerializeMessage(copy)); + Assert.AreEqual(Convert.ToBase64String(contents), Convert.ToBase64String(copy.ToByteArray())); + } + + [TestMethod] + public virtual void RoundTripWithEmptyChildMessageSpeed() + { + SpeedMessage1 msg = SpeedMessage1.CreateBuilder() + .SetField100(100) + .SetField15(SpeedMessage1SubMessage.DefaultInstance) + .BuildPartial(); + byte[] contents = msg.ToByteArray(); + object content = SerializeMessage(msg); + + SpeedMessage1 copy = DeserializeMessage(content, SpeedMessage1.CreateBuilder(), ExtensionRegistry.Empty).BuildPartial(); + + Assert.AreEqual(msg, copy); + AssertOutputEquals(content, SerializeMessage(copy)); + Assert.AreEqual(Convert.ToBase64String(contents), Convert.ToBase64String(copy.ToByteArray())); + } + [TestMethod] public virtual void RoundTripMessage1OptimizeSize() { -- cgit v1.2.3