@@ -18,14 +18,22 @@ public void ReflectionBased_CompleteModel_WithFormatConverter()
1818 DateTimeProperty = new DateTime ( 2023 , 10 , 1 , 12 , 0 , 0 , DateTimeKind . Utc ) ,
1919 NullableDateTimeProperty = new DateTime ( 2023 , 10 , 1 , 12 , 0 , 0 , DateTimeKind . Utc ) ,
2020 DateTimeOffsetProperty = new DateTimeOffset ( 2023 , 10 , 1 , 12 , 0 , 0 , TimeSpan . Zero ) ,
21- NullableDateTimeOffsetProperty = new DateTimeOffset ( 2023 , 10 , 1 , 12 , 0 , 0 , TimeSpan . Zero )
21+ NullableDateTimeOffsetProperty = new DateTimeOffset ( 2023 , 10 , 1 , 12 , 0 , 0 , TimeSpan . Zero ) ,
22+ DateOnlyProperty = new DateOnly ( 2023 , 10 , 1 ) ,
23+ NullableDateOnlyProperty = new DateOnly ( 2023 , 10 , 1 ) ,
24+ TimeOnlyProperty = new TimeOnly ( 14 , 30 , 45 ) ,
25+ NullableTimeOnlyProperty = new TimeOnly ( 14 , 30 , 45 )
2226 } ;
2327 const string expectedJson = """
2428 {
2529 "DateTimeProperty": "2023-10-01T12:00:00",
2630 "NullableDateTimeProperty": "2023-10-01T12:00:00",
2731 "DateTimeOffsetProperty": "2023-10-01T12:00:00.000Z",
28- "NullableDateTimeOffsetProperty": "2023-10-01T12:00:00.000Z"
32+ "NullableDateTimeOffsetProperty": "2023-10-01T12:00:00.000Z",
33+ "DateOnlyProperty": "10/01/2023",
34+ "NullableDateOnlyProperty": "10/01/2023",
35+ "TimeOnlyProperty": "14.30.45",
36+ "NullableTimeOnlyProperty": "14.30.45"
2937 }
3038 """ ;
3139
@@ -39,6 +47,10 @@ public void ReflectionBased_CompleteModel_WithFormatConverter()
3947 Assert . Equal ( originalModel . NullableDateTimeProperty , deserializedModel . NullableDateTimeProperty ) ;
4048 Assert . Equal ( originalModel . DateTimeOffsetProperty , deserializedModel . DateTimeOffsetProperty ) ;
4149 Assert . Equal ( originalModel . NullableDateTimeOffsetProperty , deserializedModel . NullableDateTimeOffsetProperty ) ;
50+ Assert . Equal ( originalModel . DateOnlyProperty , deserializedModel . DateOnlyProperty ) ;
51+ Assert . Equal ( originalModel . NullableDateOnlyProperty , deserializedModel . NullableDateOnlyProperty ) ;
52+ Assert . Equal ( originalModel . TimeOnlyProperty , deserializedModel . TimeOnlyProperty ) ;
53+ Assert . Equal ( originalModel . NullableTimeOnlyProperty , deserializedModel . NullableTimeOnlyProperty ) ;
4254 Assert . Equal ( expectedJson , json ) ;
4355 }
4456
@@ -55,14 +67,22 @@ public void ReflectionBased_CompleteModel_WithFormatConverter_WithNullValues()
5567 DateTimeProperty = new DateTime ( 2023 , 10 , 1 , 12 , 0 , 0 , DateTimeKind . Utc ) ,
5668 NullableDateTimeProperty = null ,
5769 DateTimeOffsetProperty = new DateTimeOffset ( 2023 , 10 , 1 , 12 , 0 , 0 , TimeSpan . Zero ) ,
58- NullableDateTimeOffsetProperty = null
70+ NullableDateTimeOffsetProperty = null ,
71+ DateOnlyProperty = new DateOnly ( 2023 , 10 , 1 ) ,
72+ NullableDateOnlyProperty = null ,
73+ TimeOnlyProperty = new TimeOnly ( 14 , 30 , 45 ) ,
74+ NullableTimeOnlyProperty = null
5975 } ;
6076 const string expectedJson = """
6177 {
6278 "DateTimeProperty": "2023-10-01T12:00:00",
6379 "NullableDateTimeProperty": null,
6480 "DateTimeOffsetProperty": "2023-10-01T12:00:00.000Z",
65- "NullableDateTimeOffsetProperty": null
81+ "NullableDateTimeOffsetProperty": null,
82+ "DateOnlyProperty": "10/01/2023",
83+ "NullableDateOnlyProperty": null,
84+ "TimeOnlyProperty": "14.30.45",
85+ "NullableTimeOnlyProperty": null
6686 }
6787 """ ;
6888
@@ -76,6 +96,10 @@ public void ReflectionBased_CompleteModel_WithFormatConverter_WithNullValues()
7696 Assert . Null ( deserializedModel . NullableDateTimeProperty ) ;
7797 Assert . Equal ( originalModel . DateTimeOffsetProperty , deserializedModel . DateTimeOffsetProperty ) ;
7898 Assert . Null ( deserializedModel . NullableDateTimeOffsetProperty ) ;
99+ Assert . Equal ( originalModel . DateOnlyProperty , deserializedModel . DateOnlyProperty ) ;
100+ Assert . Null ( deserializedModel . NullableDateOnlyProperty ) ;
101+ Assert . Equal ( originalModel . TimeOnlyProperty , deserializedModel . TimeOnlyProperty ) ;
102+ Assert . Null ( deserializedModel . NullableTimeOnlyProperty ) ;
79103 Assert . Equal ( expectedJson , json ) ;
80104 }
81105
@@ -90,14 +114,22 @@ public void SourceGenerator_CompleteModel_WithFormatConverter()
90114 DateTimeProperty = new DateTime ( 2023 , 10 , 1 , 12 , 0 , 0 , DateTimeKind . Utc ) ,
91115 NullableDateTimeProperty = new DateTime ( 2023 , 10 , 1 , 12 , 0 , 0 , DateTimeKind . Utc ) ,
92116 DateTimeOffsetProperty = new DateTimeOffset ( 2023 , 10 , 1 , 12 , 0 , 0 , TimeSpan . Zero ) ,
93- NullableDateTimeOffsetProperty = new DateTimeOffset ( 2023 , 10 , 1 , 12 , 0 , 0 , TimeSpan . Zero )
117+ NullableDateTimeOffsetProperty = new DateTimeOffset ( 2023 , 10 , 1 , 12 , 0 , 0 , TimeSpan . Zero ) ,
118+ DateOnlyProperty = new DateOnly ( 2023 , 10 , 1 ) ,
119+ NullableDateOnlyProperty = new DateOnly ( 2023 , 10 , 1 ) ,
120+ TimeOnlyProperty = new TimeOnly ( 14 , 30 , 45 ) ,
121+ NullableTimeOnlyProperty = new TimeOnly ( 14 , 30 , 45 )
94122 } ;
95123 const string expectedJson = """
96124 {
97125 "DateTimeProperty": "2023-10-01T12:00:00",
98126 "NullableDateTimeProperty": "2023-10-01T12:00:00",
99127 "DateTimeOffsetProperty": "2023-10-01T12:00:00.000Z",
100- "NullableDateTimeOffsetProperty": "2023-10-01T12:00:00.000Z"
128+ "NullableDateTimeOffsetProperty": "2023-10-01T12:00:00.000Z",
129+ "DateOnlyProperty": "10/01/2023",
130+ "NullableDateOnlyProperty": "10/01/2023",
131+ "TimeOnlyProperty": "14.30.45",
132+ "NullableTimeOnlyProperty": "14.30.45"
101133 }
102134 """ ;
103135
@@ -111,6 +143,10 @@ public void SourceGenerator_CompleteModel_WithFormatConverter()
111143 Assert . Equal ( originalModel . NullableDateTimeProperty , deserializedModel . NullableDateTimeProperty ) ;
112144 Assert . Equal ( originalModel . DateTimeOffsetProperty , deserializedModel . DateTimeOffsetProperty ) ;
113145 Assert . Equal ( originalModel . NullableDateTimeOffsetProperty , deserializedModel . NullableDateTimeOffsetProperty ) ;
146+ Assert . Equal ( originalModel . DateOnlyProperty , deserializedModel . DateOnlyProperty ) ;
147+ Assert . Equal ( originalModel . NullableDateOnlyProperty , deserializedModel . NullableDateOnlyProperty ) ;
148+ Assert . Equal ( originalModel . TimeOnlyProperty , deserializedModel . TimeOnlyProperty ) ;
149+ Assert . Equal ( originalModel . NullableTimeOnlyProperty , deserializedModel . NullableTimeOnlyProperty ) ;
114150 Assert . Equal ( expectedJson , json ) ;
115151 }
116152
@@ -125,14 +161,22 @@ public void SourceGenerator_CompleteModel_WithFormatConverter_WithNullValues()
125161 DateTimeProperty = new DateTime ( 2023 , 10 , 1 , 12 , 0 , 0 , DateTimeKind . Utc ) ,
126162 NullableDateTimeProperty = null ,
127163 DateTimeOffsetProperty = new DateTimeOffset ( 2023 , 10 , 1 , 12 , 0 , 0 , TimeSpan . Zero ) ,
128- NullableDateTimeOffsetProperty = null
164+ NullableDateTimeOffsetProperty = null ,
165+ DateOnlyProperty = new DateOnly ( 2023 , 10 , 1 ) ,
166+ NullableDateOnlyProperty = null ,
167+ TimeOnlyProperty = new TimeOnly ( 14 , 30 , 45 ) ,
168+ NullableTimeOnlyProperty = null
129169 } ;
130170 const string expectedJson = """
131171 {
132172 "DateTimeProperty": "2023-10-01T12:00:00",
133173 "NullableDateTimeProperty": null,
134174 "DateTimeOffsetProperty": "2023-10-01T12:00:00.000Z",
135- "NullableDateTimeOffsetProperty": null
175+ "NullableDateTimeOffsetProperty": null,
176+ "DateOnlyProperty": "10/01/2023",
177+ "NullableDateOnlyProperty": null,
178+ "TimeOnlyProperty": "14.30.45",
179+ "NullableTimeOnlyProperty": null
136180 }
137181 """ ;
138182
@@ -146,6 +190,10 @@ public void SourceGenerator_CompleteModel_WithFormatConverter_WithNullValues()
146190 Assert . Null ( deserializedModel . NullableDateTimeProperty ) ;
147191 Assert . Equal ( originalModel . DateTimeOffsetProperty , deserializedModel . DateTimeOffsetProperty ) ;
148192 Assert . Null ( deserializedModel . NullableDateTimeOffsetProperty ) ;
193+ Assert . Equal ( originalModel . DateOnlyProperty , deserializedModel . DateOnlyProperty ) ;
194+ Assert . Null ( deserializedModel . NullableDateOnlyProperty ) ;
195+ Assert . Equal ( originalModel . TimeOnlyProperty , deserializedModel . TimeOnlyProperty ) ;
196+ Assert . Null ( deserializedModel . NullableTimeOnlyProperty ) ;
149197 Assert . Equal ( expectedJson , json ) ;
150198 }
151199}
0 commit comments