1+ using System ;
2+ using System . Text . Json ;
3+ using NUnit . Framework ;
4+ using PathfinderHonorManager . Converters ;
5+
6+ namespace PathfinderHonorManager . Tests . Converters
7+ {
8+ [ TestFixture ]
9+ public class NullableDateTimeConverterTests
10+ {
11+ private NullableDateTimeConverter _converter ;
12+
13+ [ SetUp ]
14+ public void Setup ( )
15+ {
16+ _converter = new NullableDateTimeConverter ( ) ;
17+ }
18+
19+ [ Test ]
20+ public void Read_NullString_ReturnsNull ( )
21+ {
22+ var json = "null" ;
23+ var reader = new Utf8JsonReader ( System . Text . Encoding . UTF8 . GetBytes ( json ) ) ;
24+ reader . Read ( ) ;
25+
26+ var result = _converter . Read ( ref reader , typeof ( DateTime ? ) , new JsonSerializerOptions ( ) ) ;
27+
28+ Assert . That ( result , Is . Null ) ;
29+ }
30+
31+ [ Test ]
32+ public void Read_ValidDateTimeString_ReturnsDateTime ( )
33+ {
34+ var expectedDate = new DateTime ( 2024 , 3 , 14 ) ;
35+ var json = $ "\" { expectedDate : O} \" ";
36+ var reader = new Utf8JsonReader ( System . Text . Encoding . UTF8 . GetBytes ( json ) ) ;
37+ reader . Read ( ) ;
38+
39+ var result = _converter . Read ( ref reader , typeof ( DateTime ? ) , new JsonSerializerOptions ( ) ) ;
40+
41+ Assert . That ( result , Is . Not . Null ) ;
42+ Assert . That ( result . Value . Date , Is . EqualTo ( expectedDate . Date ) ) ;
43+ }
44+
45+ [ Test ]
46+ public void Write_NullDateTime_WritesNullValue ( )
47+ {
48+ using var stream = new System . IO . MemoryStream ( ) ;
49+ using var writer = new Utf8JsonWriter ( stream ) ;
50+
51+ DateTime ? nullDateTime = null ;
52+ _converter . Write ( writer , nullDateTime , new JsonSerializerOptions ( ) ) ;
53+ writer . Flush ( ) ;
54+
55+ var json = System . Text . Encoding . UTF8 . GetString ( stream . ToArray ( ) ) ;
56+ Assert . That ( json , Is . EqualTo ( "null" ) ) ;
57+ }
58+
59+ [ Test ]
60+ public void Write_MinValueDateTime_WritesNullValue ( )
61+ {
62+ using var stream = new System . IO . MemoryStream ( ) ;
63+ using var writer = new Utf8JsonWriter ( stream ) ;
64+
65+ DateTime ? minValue = DateTime . MinValue ;
66+ _converter . Write ( writer , minValue , new JsonSerializerOptions ( ) ) ;
67+ writer . Flush ( ) ;
68+
69+ var json = System . Text . Encoding . UTF8 . GetString ( stream . ToArray ( ) ) ;
70+ Assert . That ( json , Is . EqualTo ( "null" ) ) ;
71+ }
72+
73+ [ Test ]
74+ public void Write_ValidDateTime_WritesDateTimeString ( )
75+ {
76+ using var stream = new System . IO . MemoryStream ( ) ;
77+ using var writer = new Utf8JsonWriter ( stream ) ;
78+
79+ var dateTime = new DateTime ( 2024 , 3 , 14 ) ;
80+ _converter . Write ( writer , dateTime , new JsonSerializerOptions ( ) ) ;
81+ writer . Flush ( ) ;
82+
83+ var json = System . Text . Encoding . UTF8 . GetString ( stream . ToArray ( ) ) ;
84+ Assert . That ( json , Is . EqualTo ( $ "\" { dateTime : yyyy-MM-ddTHH:mm:ss} \" ") ) ;
85+ }
86+ }
87+ }
0 commit comments