mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-07-17 19:37:35 +08:00
93 lines
4.8 KiB
C#
93 lines
4.8 KiB
C#
using Xunit;
|
|
|
|
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
|
{
|
|
public class TestCase_JsonConverterOfYesOrNoBooleanBooleanTest
|
|
{
|
|
private sealed class MockObject
|
|
{
|
|
[Newtonsoft.Json.JsonProperty(Order = 1)]
|
|
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Internal.YesOrNoBooleanConverter))]
|
|
[System.Text.Json.Serialization.JsonPropertyOrder(1)]
|
|
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Internal.YesOrNoBooleanConverter))]
|
|
public bool Property { get; set; }
|
|
|
|
[Newtonsoft.Json.JsonProperty(Order = 2)]
|
|
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Internal.YesOrNoBooleanConverter))]
|
|
[System.Text.Json.Serialization.JsonPropertyOrder(2)]
|
|
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Internal.YesOrNoBooleanConverter))]
|
|
public bool? NullableProperty { get; set; }
|
|
}
|
|
|
|
private static void TestCustomJsonConverter(IJsonSerializer jsonSerializer)
|
|
{
|
|
Assert.Multiple(() =>
|
|
{
|
|
var expectObj = new MockObject() { NullableProperty = null };
|
|
var actualJson = jsonSerializer.Serialize(expectObj);
|
|
var actualObj = jsonSerializer.Deserialize<MockObject>(actualJson);
|
|
|
|
Assert.Equal("{\"Property\":\"N\"}", actualJson);
|
|
|
|
Assert.Equal(expectObj.Property, actualObj.Property);
|
|
Assert.Equal(expectObj.Property, jsonSerializer.Deserialize<MockObject>("{\"Property\":\"N\"}").Property);
|
|
Assert.Equal(expectObj.Property, jsonSerializer.Deserialize<MockObject>("{}").Property);
|
|
|
|
Assert.Equal(expectObj.NullableProperty, actualObj.NullableProperty);
|
|
Assert.Equal(expectObj.NullableProperty, jsonSerializer.Deserialize<MockObject>("{\"NullableProperty\":null}").NullableProperty);
|
|
Assert.Equal(expectObj.NullableProperty, jsonSerializer.Deserialize<MockObject>("{}").NullableProperty);
|
|
});
|
|
|
|
Assert.Multiple(() =>
|
|
{
|
|
var expectObj = new MockObject() { Property = false, NullableProperty = false };
|
|
var actualJson = jsonSerializer.Serialize(expectObj);
|
|
var actualObj = jsonSerializer.Deserialize<MockObject>(actualJson);
|
|
|
|
Assert.Equal("{\"Property\":\"N\",\"NullableProperty\":\"N\"}", actualJson);
|
|
|
|
Assert.Equal(expectObj.Property, actualObj.Property);
|
|
Assert.Equal(expectObj.Property, jsonSerializer.Deserialize<MockObject>("{\"Property\":false}").Property);
|
|
|
|
Assert.Equal(expectObj.NullableProperty, actualObj.NullableProperty);
|
|
Assert.Equal(expectObj.NullableProperty, jsonSerializer.Deserialize<MockObject>("{\"NullableProperty\":false}").NullableProperty);
|
|
});
|
|
|
|
Assert.Multiple(() =>
|
|
{
|
|
var expectObj = new MockObject() { Property = true, NullableProperty = true };
|
|
var actualJson = jsonSerializer.Serialize(expectObj);
|
|
var actualObj = jsonSerializer.Deserialize<MockObject>(actualJson);
|
|
|
|
Assert.Equal("{\"Property\":\"Y\",\"NullableProperty\":\"Y\"}", actualJson);
|
|
|
|
Assert.Equal(expectObj.Property, actualObj.Property);
|
|
Assert.Equal(expectObj.Property, jsonSerializer.Deserialize<MockObject>("{\"Property\":true}").Property);
|
|
|
|
Assert.Equal(expectObj.NullableProperty, actualObj.NullableProperty);
|
|
Assert.Equal(expectObj.NullableProperty, jsonSerializer.Deserialize<MockObject>("{\"NullableProperty\":true}").NullableProperty);
|
|
});
|
|
}
|
|
|
|
[Fact(DisplayName = "测试用例:自定义 Newtosoft.Json.JsonConverter 之 YesOrNoBooleanConverter")]
|
|
public void TestNewtosoftJsonConverter()
|
|
{
|
|
var jsonSettings = NewtonsoftJsonSerializer.GetDefaultSerializerSettings();
|
|
jsonSettings.Formatting = Newtonsoft.Json.Formatting.None;
|
|
jsonSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
|
|
|
|
TestCustomJsonConverter(new NewtonsoftJsonSerializer(jsonSettings));
|
|
}
|
|
|
|
[Fact(DisplayName = "测试用例:自定义 System.Text.Json.Serialization.JsonConverter 之 YesOrNoBooleanConverter")]
|
|
public void TestSystemTextJsonConverter()
|
|
{
|
|
var jsonOptions = SystemTextJsonSerializer.GetDefaultSerializerOptions();
|
|
jsonOptions.WriteIndented = false;
|
|
jsonOptions.DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull;
|
|
|
|
TestCustomJsonConverter(new SystemTextJsonSerializer(jsonOptions));
|
|
}
|
|
}
|
|
}
|