aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers.Test/Compatibility/CompatibilityTests.cs
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2012-10-10 15:21:38 -0500
committerrogerk <devnull@localhost>2012-10-10 15:21:38 -0500
commit6c4a2de7df41d66e517568560259b2ab0746b05c (patch)
tree803fb7843af22e295996e72608aa159e0ff70ec2 /src/ProtocolBuffers.Test/Compatibility/CompatibilityTests.cs
parentcf6987988a41ed236e7f48d01fdf19dc4f35e468 (diff)
downloadprotobuf-6c4a2de7df41d66e517568560259b2ab0746b05c.tar.gz
protobuf-6c4a2de7df41d66e517568560259b2ab0746b05c.tar.bz2
protobuf-6c4a2de7df41d66e517568560259b2ab0746b05c.zip
Issue 50: The XML serializer will fail to deserialize a message with empty child message
Diffstat (limited to 'src/ProtocolBuffers.Test/Compatibility/CompatibilityTests.cs')
-rw-r--r--src/ProtocolBuffers.Test/Compatibility/CompatibilityTests.cs34
1 files changed, 34 insertions, 0 deletions
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
@@ -26,6 +26,40 @@ namespace Google.ProtocolBuffers.Compatibility
}
[TestMethod]
+ public virtual void RoundTripWithEmptyChildMessageSize()
+ {
+ SizeMessage1 msg = SizeMessage1.CreateBuilder()
+ .SetField100(100)
+ .SetField15(SizeMessage1SubMessage.DefaultInstance)
+ .BuildPartial();
+ byte[] contents = msg.ToByteArray();
+ object content = SerializeMessage<SizeMessage1, SizeMessage1.Builder>(msg);
+
+ SizeMessage1 copy = DeserializeMessage<SizeMessage1, SizeMessage1.Builder>(content, SizeMessage1.CreateBuilder(), ExtensionRegistry.Empty).BuildPartial();
+
+ Assert.AreEqual(msg, copy);
+ AssertOutputEquals(content, SerializeMessage<SizeMessage1, SizeMessage1.Builder>(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<SpeedMessage1, SpeedMessage1.Builder>(msg);
+
+ SpeedMessage1 copy = DeserializeMessage<SpeedMessage1, SpeedMessage1.Builder>(content, SpeedMessage1.CreateBuilder(), ExtensionRegistry.Empty).BuildPartial();
+
+ Assert.AreEqual(msg, copy);
+ AssertOutputEquals(content, SerializeMessage<SpeedMessage1, SpeedMessage1.Builder>(copy));
+ Assert.AreEqual(Convert.ToBase64String(contents), Convert.ToBase64String(copy.ToByteArray()));
+ }
+
+ [TestMethod]
public virtual void RoundTripMessage1OptimizeSize()
{
SizeMessage1 msg = SizeMessage1.CreateBuilder().MergeFrom(TestResources.google_message1).Build();