1+ using System . Text . Json ;
2+ using System . Text . Json . Protobuf . Tests ;
3+ using System . Text . Json . Serialization ;
4+ using Protobuf . System . Text . Json . Tests . Utils ;
5+ using Shouldly ;
6+ using SmartAnalyzers . ApprovalTestsExtensions ;
7+ using Xunit ;
8+
9+ namespace Protobuf . System . Text . Json . Tests ;
10+
11+ public class MessageWithWellKnownTypesTests
12+ {
13+ [ Fact ]
14+ public void Should_serialize_message_with_well_known_types_when_values_are_set ( )
15+ {
16+ // Arrange
17+ var msg = new MessageWithWellKnownTypes
18+ {
19+ DoubleValue = double . MaxValue ,
20+ FloatValue = float . MaxValue ,
21+ Int64Value = long . MaxValue ,
22+ Uint64Value = ulong . MaxValue ,
23+ Int32Value = int . MaxValue ,
24+ Uint32Value = uint . MaxValue ,
25+ BoolValue = true ,
26+ StringValue = "some_string_value" ,
27+ } ;
28+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
29+
30+ // Act
31+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
32+
33+ // Assert
34+ var approver = new ExplicitApprover ( ) ;
35+ approver . VerifyJson ( serialized ) ;
36+ }
37+
38+ [ Fact ]
39+ public void Should_serialize_message_with_well_known_types_when_values_are_not_set ( )
40+ {
41+ // Arrange
42+ var msg = new MessageWithWellKnownTypes ( ) ;
43+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
44+ jsonSerializerOptions . DefaultIgnoreCondition = JsonIgnoreCondition . Never ;
45+
46+ // Act
47+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
48+
49+ // Assert
50+ var approver = new ExplicitApprover ( ) ;
51+ approver . VerifyJson ( serialized ) ;
52+ }
53+
54+ [ Fact ]
55+ public void Should_serialize_and_deserialize_message_with_well_known_types_when_values_are_set ( )
56+ {
57+ // Arrange
58+ var msg = new MessageWithWellKnownTypes
59+ {
60+ DoubleValue = double . MaxValue ,
61+ FloatValue = float . MaxValue ,
62+ Int64Value = long . MaxValue ,
63+ Uint64Value = ulong . MaxValue ,
64+ Int32Value = int . MaxValue ,
65+ Uint32Value = uint . MaxValue ,
66+ BoolValue = true ,
67+ StringValue = "some_string_value"
68+ } ;
69+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
70+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
71+
72+ // Act
73+ var deserialized = JsonSerializer . Deserialize < MessageWithWellKnownTypes > ( serialized , jsonSerializerOptions ) ;
74+
75+
76+ // Assert
77+ deserialized . ShouldBe ( msg ) ;
78+ }
79+
80+ [ Fact ]
81+ public void Should_serialize_and_deserialize_message_with_well_known_types_when_values_are_not_set ( )
82+ {
83+ // Arrange
84+ var msg = new MessageWithWellKnownTypes ( ) ;
85+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
86+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
87+
88+ // Act
89+ var deserialized = JsonSerializer . Deserialize < MessageWithWellKnownTypes > ( serialized , jsonSerializerOptions ) ;
90+
91+ // Assert
92+ deserialized . ShouldBe ( msg ) ;
93+ }
94+ }
0 commit comments