From c92014bd3ef50c1c7cb4c2cff31e34e2d93786d2 Mon Sep 17 00:00:00 2001 From: Weihan Li Date: Mon, 22 Jul 2024 17:21:33 +0000 Subject: [PATCH] test: source generation test --- .../tests/Common/PropertyVisibilityTests.cs | 49 +++++++++---------- .../Serialization/PropertyVisibilityTests.cs | 2 + ...nTypeInfoResolverTests.JsonPropertyInfo.cs | 1 + 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/libraries/System.Text.Json/tests/Common/PropertyVisibilityTests.cs b/src/libraries/System.Text.Json/tests/Common/PropertyVisibilityTests.cs index f4eca0041083c3..bd46878470d6d6 100644 --- a/src/libraries/System.Text.Json/tests/Common/PropertyVisibilityTests.cs +++ b/src/libraries/System.Text.Json/tests/Common/PropertyVisibilityTests.cs @@ -2035,31 +2035,6 @@ public async Task JsonIgnoreCondition_LastOneWins() Assert.Null(obj.MyString); } - [Fact] - public void JsonIgnoreCondition_WhenWriting() - { - var json = JsonSerializer.Serialize(new JsonIgnoreCondition_WhenReadingWritingTestModel{ Age = 10, Name="Mike" }); - Assert.Equal("""{"Age":10}""", json); - } - - [Fact] - public void JsonIgnoreCondition_WhenReading() - { - var json = """{"Age":10, "Name":"Mike"}"""; - var model = JsonSerializer.Deserialize(json); - Assert.Equal("Mike", model.Name); - Assert.Equal(0, model.Age); - } - - public class JsonIgnoreCondition_WhenReadingWritingTestModel - { - [JsonIgnore(Condition = JsonIgnoreCondition.WhenReading)] - public int Age { get; set; } - [JsonIgnore(Condition = JsonIgnoreCondition.WhenWriting)] - public string Name { get; set; } - } - - [Fact] public async Task ClassWithComplexObjectsUsingIgnoreWhenWritingDefaultAttribute() { @@ -2190,6 +2165,30 @@ public async Task IgnoreConditionWhenWritingDefault_WinsOver_IgnoreReadOnlyField Assert.Equal(@"{}", json); } + [Fact] + public async Task JsonIgnoreCondition_WhenWriting() + { + var json = await Serializer.SerializeWrapper(new JsonIgnoreCondition_WhenReadingWritingTestModel{ Age = 10, Name = "Mike" }); + Assert.Equal("""{"Age":10}""", json); + } + + [Fact] + public async Task JsonIgnoreCondition_WhenReading() + { + var json = """{"Age":10, "Name":"Mike"}"""; + var model = await Serializer.DeserializeWrapper(json); + Assert.Equal("Mike", model.Name); + Assert.Equal(0, model.Age); + } + + public class JsonIgnoreCondition_WhenReadingWritingTestModel + { + [JsonIgnore(Condition = JsonIgnoreCondition.WhenReading)] + public int Age { get; set; } + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWriting)] + public string? Name { get; set; } + } + public class ClassWithReadOnlyStringProperty { public string MyString { get; } diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/PropertyVisibilityTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/PropertyVisibilityTests.cs index 89635a6b64b5f0..21b0792d84dda0 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/PropertyVisibilityTests.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/PropertyVisibilityTests.cs @@ -340,6 +340,7 @@ public override async Task ClassWithIgnoredAndPrivateMembers_DoesNotIncludeIgnor [JsonSerializable(typeof(ClassWithProperty_IgnoreConditionAlways_Ctor))] [JsonSerializable(typeof(ClassWithClassProperty_IgnoreConditionWhenWritingDefault_Ctor))] [JsonSerializable(typeof(StructWithStructProperty_IgnoreConditionWhenWritingDefault_Ctor))] + [JsonSerializable(typeof(JsonIgnoreCondition_WhenReadingWritingTestModel))] [JsonSerializable(typeof(SmallStructWithValueAndReferenceTypes))] [JsonSerializable(typeof(WrapperForClassWithIgnoredUnsupportedDictionary))] [JsonSerializable(typeof(Class1))] @@ -613,6 +614,7 @@ partial class DefaultContextWithGlobalIgnoreSetting : JsonSerializerContext; [JsonSerializable(typeof(ClassWithProperty_IgnoreConditionAlways_Ctor))] [JsonSerializable(typeof(ClassWithClassProperty_IgnoreConditionWhenWritingDefault_Ctor))] [JsonSerializable(typeof(StructWithStructProperty_IgnoreConditionWhenWritingDefault_Ctor))] + [JsonSerializable(typeof(JsonIgnoreCondition_WhenReadingWritingTestModel))] [JsonSerializable(typeof(SmallStructWithValueAndReferenceTypes))] [JsonSerializable(typeof(WrapperForClassWithIgnoredUnsupportedDictionary))] [JsonSerializable(typeof(Class1))] diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/MetadataTests/DefaultJsonTypeInfoResolverTests.JsonPropertyInfo.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/MetadataTests/DefaultJsonTypeInfoResolverTests.JsonPropertyInfo.cs index 631be65d8f24ff..4f263a7c882895 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/MetadataTests/DefaultJsonTypeInfoResolverTests.JsonPropertyInfo.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/MetadataTests/DefaultJsonTypeInfoResolverTests.JsonPropertyInfo.cs @@ -908,6 +908,7 @@ public enum ModifyJsonIgnore [InlineData(JsonIgnoreCondition.Never, ModifyJsonIgnore.DontModify)] [InlineData(JsonIgnoreCondition.WhenWritingDefault, ModifyJsonIgnore.NeverSerialize)] [InlineData(JsonIgnoreCondition.WhenWritingNull, ModifyJsonIgnore.NeverSerialize)] + [InlineData(JsonIgnoreCondition.WhenWriting, ModifyJsonIgnore.NeverSerialize)] [InlineData(JsonIgnoreCondition.Never, ModifyJsonIgnore.NeverSerialize)] [InlineData(JsonIgnoreCondition.WhenWritingDefault, ModifyJsonIgnore.AlwaysSerialize)] [InlineData(JsonIgnoreCondition.WhenWritingNull, ModifyJsonIgnore.AlwaysSerialize)]