|
|
|
@ -38,6 +38,8 @@ using Google.Protobuf.WellKnownTypes; |
|
|
|
|
using Google.Protobuf.Reflection; |
|
|
|
|
|
|
|
|
|
using static Google.Protobuf.JsonParserTest; // For WrapInQuotes |
|
|
|
|
using System.IO; |
|
|
|
|
using Google.Protobuf.Collections; |
|
|
|
|
|
|
|
|
|
namespace Google.Protobuf |
|
|
|
|
{ |
|
|
|
@ -528,6 +530,51 @@ namespace Google.Protobuf |
|
|
|
|
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> |
|
|
|
|
/// 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 |
|
|
|
|