5
5
using System . Collections . Generic ;
6
6
using System . IO ;
7
7
using System . Reflection ;
8
+ using System . Text ;
8
9
using System . Text . Json ;
9
10
using System . Text . Json . Serialization ;
10
11
using System . Threading ;
@@ -53,6 +54,9 @@ public void CanConvertInt()
53
54
54
55
Assert . AreEqual ( "a.value" , data . A ) ;
55
56
Assert . AreEqual ( 1 , data . Properties . ToObjectFromJson < int > ( ) ) ;
57
+
58
+ var roundTripString = GetSerializedString ( data ) ;
59
+ Assert . AreEqual ( File . ReadAllText ( GetFileName ( "JsonFormattedStringInt.json" ) ) . TrimEnd ( ) , roundTripString ) ;
56
60
}
57
61
58
62
[ Test ]
@@ -63,7 +67,10 @@ public void CanConvertDouble()
63
67
var data = ModelWithBinaryData . DeserializeModelWithBinaryData ( document . RootElement ) ;
64
68
65
69
Assert . AreEqual ( "a.value" , data . A ) ;
66
- Assert . AreEqual ( 1.1 , data . Properties . ToObjectFromJson < double > ( ) ) ;
70
+ Assert . AreEqual ( 1.5 , data . Properties . ToObjectFromJson < double > ( ) ) ;
71
+
72
+ var roundTripString = GetSerializedString ( data ) ;
73
+ Assert . AreEqual ( File . ReadAllText ( GetFileName ( "JsonFormattedStringDouble.json" ) ) . TrimEnd ( ) , roundTripString ) ;
67
74
}
68
75
69
76
[ Test ]
@@ -75,6 +82,51 @@ public void CanConvertString()
75
82
76
83
Assert . AreEqual ( "a.value" , data . A ) ;
77
84
Assert . AreEqual ( "1" , data . Properties . ToObjectFromJson < string > ( ) ) ;
85
+
86
+ var roundTripString = GetSerializedString ( data ) ;
87
+ Assert . AreEqual ( File . ReadAllText ( GetFileName ( "JsonFormattedStringString.json" ) ) . TrimEnd ( ) , roundTripString ) ;
88
+ }
89
+
90
+ [ Test ]
91
+ public void CanConvertNull ( )
92
+ {
93
+ using var fs = File . Open ( GetFileName ( "JsonFormattedStringNull.json" ) , FileMode . Open , FileAccess . Read , FileShare . Read ) ;
94
+ using var document = JsonDocument . Parse ( fs ) ;
95
+ var data = ModelWithBinaryData . DeserializeModelWithBinaryData ( document . RootElement ) ;
96
+
97
+ Assert . AreEqual ( "a.value" , data . A ) ;
98
+ Assert . AreEqual ( null , data . Properties . ToObjectFromJson < string > ( ) ) ;
99
+
100
+ var roundTripString = GetSerializedString ( data ) ;
101
+ Assert . AreEqual ( File . ReadAllText ( GetFileName ( "JsonFormattedStringNull.json" ) ) . TrimEnd ( ) , roundTripString ) ;
102
+ }
103
+
104
+ [ Test ]
105
+ public void CanConvertTrue ( )
106
+ {
107
+ using var fs = File . Open ( GetFileName ( "JsonFormattedStringTrue.json" ) , FileMode . Open , FileAccess . Read , FileShare . Read ) ;
108
+ using var document = JsonDocument . Parse ( fs ) ;
109
+ var data = ModelWithBinaryData . DeserializeModelWithBinaryData ( document . RootElement ) ;
110
+
111
+ Assert . AreEqual ( "a.value" , data . A ) ;
112
+ Assert . AreEqual ( true , data . Properties . ToObjectFromJson < bool > ( ) ) ;
113
+
114
+ var roundTripString = GetSerializedString ( data ) ;
115
+ Assert . AreEqual ( File . ReadAllText ( GetFileName ( "JsonFormattedStringTrue.json" ) ) . TrimEnd ( ) , roundTripString ) ;
116
+ }
117
+
118
+ [ Test ]
119
+ public void CanConvertFalse ( )
120
+ {
121
+ using var fs = File . Open ( GetFileName ( "JsonFormattedStringFalse.json" ) , FileMode . Open , FileAccess . Read , FileShare . Read ) ;
122
+ using var document = JsonDocument . Parse ( fs ) ;
123
+ var data = ModelWithBinaryData . DeserializeModelWithBinaryData ( document . RootElement ) ;
124
+
125
+ Assert . AreEqual ( "a.value" , data . A ) ;
126
+ Assert . AreEqual ( false , data . Properties . ToObjectFromJson < bool > ( ) ) ;
127
+
128
+ var roundTripString = GetSerializedString ( data ) ;
129
+ Assert . AreEqual ( File . ReadAllText ( GetFileName ( "JsonFormattedStringFalse.json" ) ) . TrimEnd ( ) , roundTripString ) ;
78
130
}
79
131
80
132
[ Test ]
@@ -325,6 +377,81 @@ public void SerailizeUsingAnonObject()
325
377
Assert . AreEqual ( expected , actual ) ;
326
378
}
327
379
380
+ [ Test ]
381
+ public void SerailizeUsingAnonObjectSettingString ( )
382
+ {
383
+ var expected = File . ReadAllText ( GetFileName ( "JsonFormattedStringString.json" ) ) . TrimEnd ( ) ;
384
+
385
+ var payload = new ModelWithBinaryData { A = "a.value" } ;
386
+ payload . Properties = BinaryData . FromObjectAsJson ( "1" ) ;
387
+ string actual = GetSerializedString ( payload ) ;
388
+ Assert . AreEqual ( expected , actual ) ;
389
+
390
+ payload . Properties = BinaryData . FromString ( "\" 1\" " ) ;
391
+ actual = GetSerializedString ( payload ) ;
392
+ Assert . AreEqual ( expected , actual ) ;
393
+ }
394
+
395
+ [ Test ]
396
+ public void SerailizeUsingAnonObjectSettingTrue ( )
397
+ {
398
+ var expected = File . ReadAllText ( GetFileName ( "JsonFormattedStringTrue.json" ) ) . TrimEnd ( ) ;
399
+
400
+ var payload = new ModelWithBinaryData { A = "a.value" } ;
401
+ payload . Properties = BinaryData . FromObjectAsJson ( true ) ;
402
+
403
+ string actual = GetSerializedString ( payload ) ;
404
+ Assert . AreEqual ( expected , actual ) ;
405
+ }
406
+
407
+ [ Test ]
408
+ public void SerailizeUsingAnonObjectSettingFalse ( )
409
+ {
410
+ var expected = File . ReadAllText ( GetFileName ( "JsonFormattedStringFalse.json" ) ) . TrimEnd ( ) ;
411
+
412
+ var payload = new ModelWithBinaryData { A = "a.value" } ;
413
+ payload . Properties = BinaryData . FromObjectAsJson ( false ) ;
414
+
415
+ string actual = GetSerializedString ( payload ) ;
416
+ Assert . AreEqual ( expected , actual ) ;
417
+ }
418
+
419
+ [ Test ]
420
+ public void SerailizeUsingAnonObjectSettingInt ( )
421
+ {
422
+ var expected = File . ReadAllText ( GetFileName ( "JsonFormattedStringInt.json" ) ) . TrimEnd ( ) ;
423
+
424
+ var payload = new ModelWithBinaryData { A = "a.value" } ;
425
+ payload . Properties = BinaryData . FromObjectAsJson ( 1 ) ;
426
+
427
+ string actual = GetSerializedString ( payload ) ;
428
+ Assert . AreEqual ( expected , actual ) ;
429
+ }
430
+
431
+ [ Test ]
432
+ public void SerailizeUsingAnonObjectSettingDouble ( )
433
+ {
434
+ var expected = File . ReadAllText ( GetFileName ( "JsonFormattedStringDouble.json" ) ) . TrimEnd ( ) ;
435
+
436
+ var payload = new ModelWithBinaryData { A = "a.value" } ;
437
+ payload . Properties = BinaryData . FromObjectAsJson ( 1.5 ) ;
438
+
439
+ string actual = GetSerializedString ( payload ) ;
440
+ Assert . AreEqual ( expected , actual ) ;
441
+ }
442
+
443
+ [ Test ]
444
+ public void SerailizeUsingAnonObjectSettingNull ( )
445
+ {
446
+ var expected = File . ReadAllText ( GetFileName ( "JsonFormattedStringNull.json" ) ) . TrimEnd ( ) ;
447
+
448
+ var payload = new ModelWithBinaryData { A = "a.value" } ;
449
+ payload . Properties = BinaryData . FromObjectAsJson < object > ( null ) ;
450
+
451
+ string actual = GetSerializedString ( payload ) ;
452
+ Assert . AreEqual ( expected , actual ) ;
453
+ }
454
+
328
455
private static string GetSerializedString ( BinaryData payload )
329
456
{
330
457
using var ms = new MemoryStream ( ) ;
0 commit comments