|
@@ -131,8 +131,8 @@ namespace Google.Protobuf
|
|
|
// Without setting any values, there's nothing to write.
|
|
|
byte[] bytes = message.ToByteArray();
|
|
|
Assert.AreEqual(0, bytes.Length);
|
|
|
- TestAllTypes parsed = TestAllTypes.Parser.ParseFrom(bytes);
|
|
|
- Assert.AreEqual(message, parsed);
|
|
|
+
|
|
|
+ MessageParsingHelpers.AssertRoundtrip(TestAllTypes.Parser, message);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -165,8 +165,8 @@ namespace Google.Protobuf
|
|
|
};
|
|
|
|
|
|
byte[] bytes = message.ToByteArray();
|
|
|
- TestAllTypes parsed = TestAllTypes.Parser.ParseFrom(bytes);
|
|
|
- Assert.AreEqual(message, parsed);
|
|
|
+
|
|
|
+ MessageParsingHelpers.AssertRoundtrip(TestAllTypes.Parser, message);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -199,8 +199,8 @@ namespace Google.Protobuf
|
|
|
};
|
|
|
|
|
|
byte[] bytes = message.ToByteArray();
|
|
|
- TestAllTypes parsed = TestAllTypes.Parser.ParseFrom(bytes);
|
|
|
- Assert.AreEqual(message, parsed);
|
|
|
+
|
|
|
+ MessageParsingHelpers.AssertRoundtrip(TestAllTypes.Parser, message);
|
|
|
}
|
|
|
|
|
|
// Note that not every map within map_unittest_proto3 is used. They all go through very
|
|
@@ -231,8 +231,8 @@ namespace Google.Protobuf
|
|
|
};
|
|
|
|
|
|
byte[] bytes = message.ToByteArray();
|
|
|
- TestMap parsed = TestMap.Parser.ParseFrom(bytes);
|
|
|
- Assert.AreEqual(message, parsed);
|
|
|
+
|
|
|
+ MessageParsingHelpers.AssertRoundtrip(TestMap.Parser, message);
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -246,9 +246,14 @@ namespace Google.Protobuf
|
|
|
byte[] bytes = message.ToByteArray();
|
|
|
Assert.AreEqual(2, bytes.Length); // Tag for field entry (1 byte), length of entry (0; 1 byte)
|
|
|
|
|
|
- var parsed = TestMap.Parser.ParseFrom(bytes);
|
|
|
- Assert.AreEqual(1, parsed.MapInt32Bytes.Count);
|
|
|
- Assert.AreEqual(ByteString.Empty, parsed.MapInt32Bytes[0]);
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ TestMap.Parser,
|
|
|
+ bytes,
|
|
|
+ parsed=>
|
|
|
+ {
|
|
|
+ Assert.AreEqual(1, parsed.MapInt32Bytes.Count);
|
|
|
+ Assert.AreEqual(ByteString.Empty, parsed.MapInt32Bytes[0]);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -265,8 +270,13 @@ namespace Google.Protobuf
|
|
|
output.WriteMessage(nestedMessage);
|
|
|
output.Flush();
|
|
|
|
|
|
- var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray());
|
|
|
- Assert.AreEqual(nestedMessage, parsed.MapInt32ForeignMessage[0]);
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ TestMap.Parser,
|
|
|
+ memoryStream.ToArray(),
|
|
|
+ parsed =>
|
|
|
+ {
|
|
|
+ Assert.AreEqual(nestedMessage, parsed.MapInt32ForeignMessage[0]);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -282,8 +292,13 @@ namespace Google.Protobuf
|
|
|
output.WriteInt32(key);
|
|
|
output.Flush();
|
|
|
|
|
|
- var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray());
|
|
|
- Assert.AreEqual(0.0, parsed.MapInt32Double[key]);
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ TestMap.Parser,
|
|
|
+ memoryStream.ToArray(),
|
|
|
+ parsed =>
|
|
|
+ {
|
|
|
+ Assert.AreEqual(0.0, parsed.MapInt32Double[key]);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -299,8 +314,13 @@ namespace Google.Protobuf
|
|
|
output.WriteInt32(key);
|
|
|
output.Flush();
|
|
|
|
|
|
- var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray());
|
|
|
- Assert.AreEqual(new ForeignMessage(), parsed.MapInt32ForeignMessage[key]);
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ TestMap.Parser,
|
|
|
+ memoryStream.ToArray(),
|
|
|
+ parsed =>
|
|
|
+ {
|
|
|
+ Assert.AreEqual(new ForeignMessage(), parsed.MapInt32ForeignMessage[key]);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -327,8 +347,13 @@ namespace Google.Protobuf
|
|
|
output.WriteInt32(extra);
|
|
|
output.Flush();
|
|
|
|
|
|
- var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray());
|
|
|
- Assert.AreEqual(value, parsed.MapInt32Int32[key]);
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ TestMap.Parser,
|
|
|
+ memoryStream.ToArray(),
|
|
|
+ parsed =>
|
|
|
+ {
|
|
|
+ Assert.AreEqual(value, parsed.MapInt32Int32[key]);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -351,8 +376,13 @@ namespace Google.Protobuf
|
|
|
output.WriteInt32(key);
|
|
|
output.Flush();
|
|
|
|
|
|
- var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray());
|
|
|
- Assert.AreEqual(value, parsed.MapInt32Int32[key]);
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ TestMap.Parser,
|
|
|
+ memoryStream.ToArray(),
|
|
|
+ parsed =>
|
|
|
+ {
|
|
|
+ Assert.AreEqual(value, parsed.MapInt32Int32[key]);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -397,13 +427,19 @@ namespace Google.Protobuf
|
|
|
output.WriteInt32(value3);
|
|
|
|
|
|
output.Flush();
|
|
|
- var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray());
|
|
|
- var expected = new TestMap
|
|
|
- {
|
|
|
- MapInt32Int32 = { { key1, value1 }, { key3, value3 } },
|
|
|
- MapStringString = { { key2, value2 } }
|
|
|
- };
|
|
|
- Assert.AreEqual(expected, parsed);
|
|
|
+
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ TestMap.Parser,
|
|
|
+ memoryStream.ToArray(),
|
|
|
+ parsed =>
|
|
|
+ {
|
|
|
+ var expected = new TestMap
|
|
|
+ {
|
|
|
+ MapInt32Int32 = { { key1, value1 }, { key3, value3 } },
|
|
|
+ MapStringString = { { key2, value2 } }
|
|
|
+ };
|
|
|
+ Assert.AreEqual(expected, parsed);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -433,8 +469,13 @@ namespace Google.Protobuf
|
|
|
output.WriteInt32(value2);
|
|
|
output.Flush();
|
|
|
|
|
|
- var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray());
|
|
|
- Assert.AreEqual(value2, parsed.MapInt32Int32[key]);
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ TestMap.Parser,
|
|
|
+ memoryStream.ToArray(),
|
|
|
+ parsed =>
|
|
|
+ {
|
|
|
+ Assert.AreEqual(value2, parsed.MapInt32Int32[key]);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -619,9 +660,10 @@ namespace Google.Protobuf
|
|
|
var bytes = message.ToByteArray();
|
|
|
Assert.AreEqual(3, bytes.Length); // 2 bytes for the tag + 1 for the value - no string!
|
|
|
|
|
|
- var message2 = TestAllTypes.Parser.ParseFrom(bytes);
|
|
|
- Assert.AreEqual(message, message2);
|
|
|
- Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message2.OneofFieldCase);
|
|
|
+ MessageParsingHelpers.AssertRoundtrip(TestAllTypes.Parser, message, parsedMessage =>
|
|
|
+ {
|
|
|
+ Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, parsedMessage.OneofFieldCase);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -633,9 +675,10 @@ namespace Google.Protobuf
|
|
|
var bytes = message.ToByteArray();
|
|
|
Assert.AreEqual(3, bytes.Length); // 2 bytes for the tag + 1 for the value - it's still serialized
|
|
|
|
|
|
- var message2 = TestAllTypes.Parser.ParseFrom(bytes);
|
|
|
- Assert.AreEqual(message, message2);
|
|
|
- Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message2.OneofFieldCase);
|
|
|
+ MessageParsingHelpers.AssertRoundtrip(TestAllTypes.Parser, message, parsedMessage =>
|
|
|
+ {
|
|
|
+ Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, parsedMessage.OneofFieldCase);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -651,10 +694,14 @@ namespace Google.Protobuf
|
|
|
message.WriteTo(output);
|
|
|
output.Flush();
|
|
|
|
|
|
- stream.Position = 0;
|
|
|
- var parsed = TestAllTypes.Parser.ParseFrom(stream);
|
|
|
- // TODO(jieluo): Add test back when DiscardUnknownFields API is supported.
|
|
|
- // Assert.AreEqual(message, parsed);
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ TestAllTypes.Parser,
|
|
|
+ stream.ToArray(),
|
|
|
+ parsed =>
|
|
|
+ {
|
|
|
+ // TODO(jieluo): Add test back when DiscardUnknownFields API is supported.
|
|
|
+ // Assert.AreEqual(message, parsed);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
[Test]
|
|
@@ -663,8 +710,15 @@ namespace Google.Protobuf
|
|
|
// Simple way of ensuring we can skip all kinds of fields.
|
|
|
var data = SampleMessages.CreateFullTestAllTypes().ToByteArray();
|
|
|
var empty = Empty.Parser.ParseFrom(data);
|
|
|
- // TODO(jieluo): Add test back when DiscardUnknownFields API is supported.
|
|
|
- // Assert.AreNotEqual(new Empty(), empty);
|
|
|
+
|
|
|
+ MessageParsingHelpers.AssertReadingMessage(
|
|
|
+ Empty.Parser,
|
|
|
+ data,
|
|
|
+ parsed =>
|
|
|
+ {
|
|
|
+ // TODO(jieluo): Add test back when DiscardUnknownFields API is supported.
|
|
|
+ // Assert.AreNotEqual(new Empty(), empty);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
// This was originally seen as a conformance test failure.
|
|
@@ -674,7 +728,7 @@ namespace Google.Protobuf
|
|
|
// 130, 3 is the message tag
|
|
|
// 1 is the data length - but there's no data.
|
|
|
var data = new byte[] { 130, 3, 1 };
|
|
|
- Assert.Throws<InvalidProtocolBufferException>(() => TestAllTypes.Parser.ParseFrom(data));
|
|
|
+ MessageParsingHelpers.AssertReadingMessageThrows<TestAllTypes, InvalidProtocolBufferException>(TestAllTypes.Parser, data);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -695,7 +749,7 @@ namespace Google.Protobuf
|
|
|
output.Flush();
|
|
|
|
|
|
stream.Position = 0;
|
|
|
- Assert.Throws<InvalidProtocolBufferException>(() => TestAllTypes.Parser.ParseFrom(stream));
|
|
|
+ MessageParsingHelpers.AssertReadingMessageThrows<TestAllTypes, InvalidProtocolBufferException>(TestAllTypes.Parser, stream.ToArray());
|
|
|
}
|
|
|
|
|
|
[Test]
|