|
@@ -38,6 +38,8 @@ using Google.Protobuf.WellKnownTypes;
|
|
using Google.Protobuf.Reflection;
|
|
using Google.Protobuf.Reflection;
|
|
|
|
|
|
using static Google.Protobuf.JsonParserTest; // For WrapInQuotes
|
|
using static Google.Protobuf.JsonParserTest; // For WrapInQuotes
|
|
|
|
+using System.IO;
|
|
|
|
+using Google.Protobuf.Collections;
|
|
|
|
|
|
namespace Google.Protobuf
|
|
namespace Google.Protobuf
|
|
{
|
|
{
|
|
@@ -528,6 +530,51 @@ namespace Google.Protobuf
|
|
Assert.AreEqual(expectedJson, JsonFormatter.Default.Format(populated));
|
|
Assert.AreEqual(expectedJson, JsonFormatter.Default.Format(populated));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // Sanity tests for WriteValue. Not particularly comprehensive, as it's all covered above already,
|
|
|
|
+ // as FormatMessage uses WriteValue.
|
|
|
|
+
|
|
|
|
+ [TestCase(null, "null")]
|
|
|
|
+ [TestCase(1, "1")]
|
|
|
|
+ [TestCase(1L, "'1'")]
|
|
|
|
+ [TestCase(0.5f, "0.5")]
|
|
|
|
+ [TestCase(0.5d, "0.5")]
|
|
|
|
+ [TestCase("text", "'text'")]
|
|
|
|
+ [TestCase("x\ny", @"'x\ny'")]
|
|
|
|
+ [TestCase(ForeignEnum.ForeignBar, "'FOREIGN_BAR'")]
|
|
|
|
+ public void WriteValue_Constant(object value, string expectedJson)
|
|
|
|
+ {
|
|
|
|
+ AssertWriteValue(value, expectedJson);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Test]
|
|
|
|
+ public void WriteValue_Timestamp()
|
|
|
|
+ {
|
|
|
|
+ var value = new DateTime(1673, 6, 19, 12, 34, 56, DateTimeKind.Utc).ToTimestamp();
|
|
|
|
+ AssertWriteValue(value, "'1673-06-19T12:34:56Z'");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Test]
|
|
|
|
+ public void WriteValue_Message()
|
|
|
|
+ {
|
|
|
|
+ var value = new TestAllTypes { SingleInt32 = 100, SingleInt64 = 3210987654321L };
|
|
|
|
+ AssertWriteValue(value, "{ 'singleInt32': 100, 'singleInt64': '3210987654321' }");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Test]
|
|
|
|
+ public void WriteValue_List()
|
|
|
|
+ {
|
|
|
|
+ var value = new RepeatedField<int> { 1, 2, 3 };
|
|
|
|
+ AssertWriteValue(value, "[ 1, 2, 3 ]");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static void AssertWriteValue(object value, string expectedJson)
|
|
|
|
+ {
|
|
|
|
+ var writer = new StringWriter();
|
|
|
|
+ JsonFormatter.Default.WriteValue(writer, value);
|
|
|
|
+ string actual = writer.ToString();
|
|
|
|
+ AssertJson(expectedJson, actual);
|
|
|
|
+ }
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
/// Checks that the actual JSON is the same as the expected JSON - but after replacing
|
|
/// Checks that the actual JSON is the same as the expected JSON - but after replacing
|
|
/// all apostrophes in the expected JSON with double quotes. This basically makes the tests easier
|
|
/// all apostrophes in the expected JSON with double quotes. This basically makes the tests easier
|