1+ using NUnit . Framework ;
2+
3+ namespace ServiceStack . Text . Tests . Issues
4+ {
5+ public class NullableIssues
6+ {
7+ public class NBoolTest
8+ {
9+ public bool ? IsOk { get ; set ; }
10+
11+ protected bool Equals ( NBoolTest other ) => IsOk == other . IsOk ;
12+ public override bool Equals ( object obj )
13+ {
14+ if ( ReferenceEquals ( null , obj ) ) return false ;
15+ if ( ReferenceEquals ( this , obj ) ) return true ;
16+ if ( obj . GetType ( ) != this . GetType ( ) ) return false ;
17+ return Equals ( ( NBoolTest ) obj ) ;
18+ }
19+ public override int GetHashCode ( ) => IsOk . GetHashCode ( ) ;
20+ }
21+
22+ [ Test ]
23+ public void Does_deserialize_nullable_bools ( )
24+ {
25+ Assert . That ( "{\" IsOk\" : true}" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = true } ) ) ;
26+ Assert . That ( "{\" IsOk\" : false}" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = false } ) ) ;
27+ Assert . That ( "{\" IsOk\" : \" true\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = true } ) ) ;
28+ Assert . That ( "{\" IsOk\" : \" false\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = false } ) ) ;
29+ Assert . That ( "{\" IsOk\" : \" True\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = true } ) ) ;
30+ Assert . That ( "{\" IsOk\" : \" False\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = false } ) ) ;
31+
32+ Assert . That ( "{\" IsOk\" : null}" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = null } ) ) ;
33+ }
34+
35+ [ Test ]
36+ public void Does_deserialize_nullable_bools_conventions ( )
37+ {
38+ Assert . That ( "{\" IsOk\" : \" t\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = true } ) ) ;
39+ Assert . That ( "{\" IsOk\" : \" f\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = false } ) ) ;
40+ Assert . That ( "{\" IsOk\" : \" Y\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = true } ) ) ;
41+ Assert . That ( "{\" IsOk\" : \" N\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = false } ) ) ;
42+ Assert . That ( "{\" IsOk\" : \" on\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = true } ) ) ;
43+ Assert . That ( "{\" IsOk\" : \" off\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = false } ) ) ;
44+ }
45+
46+ [ Test ]
47+ public void Deserialize_nullable_bools_results_in_error ( )
48+ {
49+ Assert . That ( "{\" IsOk\" : \" tt\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = null } ) ) ;
50+ Assert . That ( "{\" IsOk\" : \" fu\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = null } ) ) ;
51+ Assert . That ( "{\" IsOk\" : \" eee\" }" . FromJson < NBoolTest > ( ) , Is . EqualTo ( new NBoolTest { IsOk = null } ) ) ;
52+ }
53+ }
54+ }
0 commit comments