11using Dysnomia . Common . WebAPIWrapper . Helpers ;
22
3- using FluentAssertions ;
4-
53using System . Text . Json ;
64using System . Text . Json . Serialization ;
75
86namespace Dysnomia . Common . WebAPIWrapper . Test {
9- public class JsonTests {
10- public class Entity {
11- [ JsonConverter ( typeof ( NumberToBooleanConverter ) ) ]
12- public bool NumberToBool { get ; set ; }
13- [ JsonConverter ( typeof ( StringToBooleanConverter ) ) ]
14- public bool StringToBool { get ; set ; }
15- [ JsonConverter ( typeof ( EmptyArrayToObjectConverter < SubEntity > ) ) ]
16- public SubEntity SubEntities { get ; set ; } = null ! ;
17- [ JsonConverter ( typeof ( StringToNumberConverter < int > ) ) ]
18- public int StringToNumber { get ; set ; }
19- [ JsonConverter ( typeof ( WhateverToStringConverter ) ) ]
20- public string NumberToString { get ; set ; } = null ! ;
21- [ JsonConverter ( typeof ( WhateverToStringConverter ) ) ]
22- public string StringToString { get ; set ; } = null ! ;
23- [ JsonConverter ( typeof ( WhateverToStringConverter ) ) ]
24- public string BoolToString { get ; set ; } = null ! ;
25- [ JsonConverter ( typeof ( WhateverToStringConverter ) ) ]
26- public string NullToString { get ; set ; } = null ! ;
27- }
28-
29- public class SubEntity {
30- public string Foo { get ; set ; } = null ! ;
31- }
32-
33- [ Fact ]
34- public void JsonTest_Converters_Test1 ( ) {
35- var input = @"{""SubEntities"":[],""NumberToBool"":0,""StringToBool"":""false"",""StringToNumber"":""10"",""NumberToString"":10,""StringToString"":""test"",""BoolToString"":false,""NullToString"":null}" ;
36- var expected = @"{""NumberToBool"":false,""StringToBool"":false,""SubEntities"":{""Foo"":null},""StringToNumber"":10,""NumberToString"":""10"",""StringToString"":""test"",""BoolToString"":""false"",""NullToString"":null}" ;
37-
38- var entity = JsonSerializer . Deserialize < Entity > ( input ) ;
39- var output = JsonSerializer . Serialize ( entity ) ;
40-
41- output . Should ( ) . Be ( expected ) ;
42- }
43-
44- [ Fact ]
45- public void JsonTest_Converters_Test2 ( ) {
46- var input = @"{""SubEntities"":{""Foo"":""bar""},""NumberToBool"":1,""StringToBool"":""true"",""StringToNumber"":""42"",""NumberToString"":42,""StringToString"":""foo"",""BoolToString"":true,""NullToString"":null}" ;
47- var expected = @"{""NumberToBool"":true,""StringToBool"":true,""SubEntities"":{""Foo"":""bar""},""StringToNumber"":42,""NumberToString"":""42"",""StringToString"":""foo"",""BoolToString"":""true"",""NullToString"":null}" ;
48-
49- var entity = JsonSerializer . Deserialize < Entity > ( input ) ;
50- var output = JsonSerializer . Serialize ( entity ) ;
51-
52- output . Should ( ) . Be ( expected ) ;
53- }
54- }
7+ public class JsonTests {
8+ public class Entity {
9+ [ JsonConverter ( typeof ( NumberToBooleanConverter ) ) ]
10+ public bool NumberToBool { get ; set ; }
11+ [ JsonConverter ( typeof ( StringToBooleanConverter ) ) ]
12+ public bool StringToBool { get ; set ; }
13+ [ JsonConverter ( typeof ( EmptyArrayToObjectConverter < SubEntity > ) ) ]
14+ public SubEntity SubEntities { get ; set ; } = null ! ;
15+ [ JsonConverter ( typeof ( StringToNumberConverter < int > ) ) ]
16+ public int StringToNumber { get ; set ; }
17+ [ JsonConverter ( typeof ( WhateverToStringConverter ) ) ]
18+ public string NumberToString { get ; set ; } = null ! ;
19+ [ JsonConverter ( typeof ( WhateverToStringConverter ) ) ]
20+ public string StringToString { get ; set ; } = null ! ;
21+ [ JsonConverter ( typeof ( WhateverToStringConverter ) ) ]
22+ public string BoolToString { get ; set ; } = null ! ;
23+ [ JsonConverter ( typeof ( WhateverToStringConverter ) ) ]
24+ public string NullToString { get ; set ; } = null ! ;
25+ }
26+
27+ public class SubEntity {
28+ public string Foo { get ; set ; } = null ! ;
29+ }
30+
31+ [ Fact ]
32+ public void JsonTest_Converters_Test1 ( ) {
33+ var input = @"{""SubEntities"":[],""NumberToBool"":0,""StringToBool"":""false"",""StringToNumber"":""10"",""NumberToString"":10,""StringToString"":""test"",""BoolToString"":false,""NullToString"":null}" ;
34+ var expected = @"{""NumberToBool"":false,""StringToBool"":false,""SubEntities"":{""Foo"":null},""StringToNumber"":10,""NumberToString"":""10"",""StringToString"":""test"",""BoolToString"":""false"",""NullToString"":null}" ;
35+
36+ var entity = JsonSerializer . Deserialize < Entity > ( input ) ;
37+ var output = JsonSerializer . Serialize ( entity ) ;
38+
39+ Assert . Equal ( expected , output ) ;
40+ }
41+
42+ [ Fact ]
43+ public void JsonTest_Converters_Test2 ( ) {
44+ var input = @"{""SubEntities"":{""Foo"":""bar""},""NumberToBool"":1,""StringToBool"":""true"",""StringToNumber"":""42"",""NumberToString"":42,""StringToString"":""foo"",""BoolToString"":true,""NullToString"":null}" ;
45+ var expected = @"{""NumberToBool"":true,""StringToBool"":true,""SubEntities"":{""Foo"":""bar""},""StringToNumber"":42,""NumberToString"":""42"",""StringToString"":""foo"",""BoolToString"":""true"",""NullToString"":null}" ;
46+
47+ var entity = JsonSerializer . Deserialize < Entity > ( input ) ;
48+ var output = JsonSerializer . Serialize ( entity ) ;
49+
50+ Assert . Equal ( expected , output ) ;
51+ }
52+ }
5553}
0 commit comments