increase test coverage
diff --git a/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.Proto2.cs b/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.Proto2.cs
index 5f90c94..1abed60 100644
--- a/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.Proto2.cs
+++ b/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.Proto2.cs
@@ -344,6 +344,8 @@
}
};
+ MessageParsingHelpers.AssertWritingMessage(message);
+
MessageParsingHelpers.AssertRoundtrip(Proto2.TestAllTypes.Parser, message);
}
@@ -359,6 +361,8 @@
new RepeatedGroup_extension { A = 30 }
});
+ MessageParsingHelpers.AssertWritingMessage(message);
+
MessageParsingHelpers.AssertRoundtrip(
TestAllExtensions.Parser.WithExtensionRegistry(new ExtensionRegistry() { UnittestExtensions.OptionalGroupExtension, UnittestExtensions.RepeatedGroupExtension }),
message);
@@ -370,6 +374,8 @@
var message = new TestGroupExtension();
message.SetExtension(TestNestedExtension.Extensions.OptionalGroupExtension, new TestNestedExtension.Types.OptionalGroup_extension { A = 10 });
+ MessageParsingHelpers.AssertWritingMessage(message);
+
MessageParsingHelpers.AssertRoundtrip(
TestGroupExtension.Parser.WithExtensionRegistry(new ExtensionRegistry() { TestNestedExtension.Extensions.OptionalGroupExtension }),
message);
diff --git a/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs b/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
index b2418ee..5ed6091 100644
--- a/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
+++ b/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
@@ -108,12 +108,18 @@
// serialize using CodedOutputStream
var bytes = message.ToByteArray();
- // also serialize using IBufferWriter and check it leads to the same data
+ int messageSize = message.CalculateSize();
+ Assert.AreEqual(message.CalculateSize(), bytes.Length);
+
+ // serialize using IBufferWriter and check it leads to the same output
var bufferWriter = new ArrayBufferWriter<byte>();
message.WriteTo(bufferWriter);
- Assert.AreEqual(bytes, bufferWriter.WrittenSpan.ToArray(), "Both serialization approaches need to result in the same data.");
+ Assert.AreEqual(bytes, bufferWriter.WrittenSpan.ToArray());
- Assert.AreEqual(message.CalculateSize(), bytes.Length);
+ // serialize into a single span and check it leads to the same output
+ var singleSpan = new Span<byte>(new byte[messageSize]);
+ message.WriteTo(singleSpan);
+ Assert.AreEqual(bytes, singleSpan.ToArray());
// TODO: also test different chunk sizes for IBufferWriter
}
diff --git a/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs b/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs
index 47ff2a1..e1f059d 100644
--- a/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs
+++ b/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs
@@ -71,6 +71,8 @@
Uint64Field = 4
};
+ MessageParsingHelpers.AssertWritingMessage(message);
+
MessageParsingHelpers.AssertRoundtrip(TestWellKnownTypes.Parser, message, parsed =>
{
Assert.AreEqual("x", parsed.StringField);
@@ -101,6 +103,8 @@
Uint64Field = 0
};
+ MessageParsingHelpers.AssertWritingMessage(message);
+
MessageParsingHelpers.AssertRoundtrip(TestWellKnownTypes.Parser, message, parsed =>
{
Assert.AreEqual("", parsed.StringField);
@@ -144,6 +148,8 @@
// Just to test a single value for sanity...
Assert.AreEqual("Second", message.StringField[1]);
+ MessageParsingHelpers.AssertWritingMessage(message);
+
MessageParsingHelpers.AssertRoundtrip(RepeatedWellKnownTypes.Parser, message);
}
@@ -196,6 +202,8 @@
// Just to test a single value for sanity...
Assert.AreEqual("Second", message.StringField[12]);
+ MessageParsingHelpers.AssertWritingMessage(message);
+
MessageParsingHelpers.AssertRoundtrip(MapWellKnownTypes.Parser, message);
}