@@ -40,6 +40,7 @@ namespace System.Text.Json.SourceGeneration.Tests
40
40
[ JsonSerializable ( typeof ( StructWithCustomConverterPropertyFactory ) ) ]
41
41
[ JsonSerializable ( typeof ( ClassWithBadCustomConverter ) ) ]
42
42
[ JsonSerializable ( typeof ( StructWithBadCustomConverter ) ) ]
43
+ [ JsonSerializable ( typeof ( PersonStruct ? ) ) ]
43
44
internal partial class SerializationContext : JsonSerializerContext , ITestContext
44
45
{
45
46
public JsonSourceGenerationMode JsonSourceGenerationMode => JsonSourceGenerationMode . Serialization ;
@@ -78,6 +79,7 @@ internal partial class SerializationContext : JsonSerializerContext, ITestContex
78
79
[ JsonSerializable ( typeof ( StructWithCustomConverterPropertyFactory ) , GenerationMode = JsonSourceGenerationMode . Serialization ) ]
79
80
[ JsonSerializable ( typeof ( ClassWithBadCustomConverter ) , GenerationMode = JsonSourceGenerationMode . Serialization ) ]
80
81
[ JsonSerializable ( typeof ( StructWithBadCustomConverter ) , GenerationMode = JsonSourceGenerationMode . Serialization ) ]
82
+ [ JsonSerializable ( typeof ( PersonStruct ? ) , GenerationMode = JsonSourceGenerationMode . Serialization ) ]
81
83
internal partial class SerializationWithPerTypeAttributeContext : JsonSerializerContext , ITestContext
82
84
{
83
85
public JsonSourceGenerationMode JsonSourceGenerationMode => JsonSourceGenerationMode . Serialization ;
@@ -117,6 +119,7 @@ internal partial class SerializationWithPerTypeAttributeContext : JsonSerializer
117
119
[ JsonSerializable ( typeof ( StructWithCustomConverterPropertyFactory ) , GenerationMode = JsonSourceGenerationMode . Serialization ) ]
118
120
[ JsonSerializable ( typeof ( ClassWithBadCustomConverter ) , GenerationMode = JsonSourceGenerationMode . Serialization ) ]
119
121
[ JsonSerializable ( typeof ( StructWithBadCustomConverter ) , GenerationMode = JsonSourceGenerationMode . Serialization ) ]
122
+ [ JsonSerializable ( typeof ( PersonStruct ? ) , GenerationMode = JsonSourceGenerationMode . Serialization ) ]
120
123
internal partial class SerializationContextWithCamelCase : JsonSerializerContext , ITestContext
121
124
{
122
125
public JsonSourceGenerationMode JsonSourceGenerationMode => JsonSourceGenerationMode . Serialization ;
@@ -164,6 +167,8 @@ public override void EnsureFastPathGeneratedAsExpected()
164
167
Assert . Null ( SerializationContext . Default . StructWithCustomConverterProperty . SerializeHandler ) ;
165
168
Assert . Throws < InvalidOperationException > ( ( ) => SerializationContext . Default . ClassWithBadCustomConverter . SerializeHandler ) ;
166
169
Assert . Throws < InvalidOperationException > ( ( ) => SerializationContext . Default . StructWithBadCustomConverter . SerializeHandler ) ;
170
+ Assert . Null ( SerializationContext . Default . NullablePersonStruct . SerializeHandler ) ;
171
+ Assert . NotNull ( SerializationContext . Default . PersonStruct . SerializeHandler ) ;
167
172
}
168
173
169
174
[ Fact ]
@@ -431,6 +436,21 @@ public void OnSerializeCallbacks()
431
436
Assert . Equal ( "{\" MyProperty\" :\" Before\" }" , json ) ;
432
437
Assert . Equal ( "After" , obj . MyProperty ) ;
433
438
}
439
+
440
+ [ Fact ]
441
+ public override void NullableStruct ( )
442
+ {
443
+ PersonStruct ? person = new ( )
444
+ {
445
+ FirstName = "Jane" ,
446
+ LastName = "Doe"
447
+ } ;
448
+
449
+ string json = JsonSerializer . Serialize ( person , DefaultContext . NullablePersonStruct ) ;
450
+ JsonTestHelper . AssertJsonEqual ( @"{""FirstName"":""Jane"",""LastName"":""Doe""}" , json ) ;
451
+
452
+ Assert . Throws < InvalidOperationException > ( ( ) => JsonSerializer . Deserialize ( json , DefaultContext . NullablePersonStruct ) ) ;
453
+ }
434
454
}
435
455
436
456
public sealed class SerializationWithPerTypeAttributeContextTests : SerializationContextTests
@@ -470,6 +490,8 @@ public override void EnsureFastPathGeneratedAsExpected()
470
490
Assert . Null ( SerializationWithPerTypeAttributeContext . Default . StructWithCustomConverterPropertyFactory . SerializeHandler ) ;
471
491
Assert . Throws < InvalidOperationException > ( ( ) => SerializationWithPerTypeAttributeContext . Default . ClassWithBadCustomConverter . SerializeHandler ) ;
472
492
Assert . Throws < InvalidOperationException > ( ( ) => SerializationWithPerTypeAttributeContext . Default . StructWithBadCustomConverter . SerializeHandler ) ;
493
+ Assert . Null ( SerializationWithPerTypeAttributeContext . Default . NullablePersonStruct . SerializeHandler ) ;
494
+ Assert . NotNull ( SerializationWithPerTypeAttributeContext . Default . PersonStruct . SerializeHandler ) ;
473
495
}
474
496
}
475
497
}
0 commit comments