1+ using System . Text . Json . Protobuf . Tests . Utils ;
2+ using Shouldly ;
3+ using SmartAnalyzers . ApprovalTestsExtensions ;
4+ using Xunit ;
5+
6+ namespace System . Text . Json . Protobuf . Tests ;
7+
8+ public class MessageWithOneOfTests
9+ {
10+ [ Fact ]
11+ public void Should_serialize_message_with_one_of_when_value_is_set ( )
12+ {
13+ // Arrange
14+ var msg = new MessageWithOneOf
15+ {
16+ Int32PropertyValue = 5
17+ } ;
18+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
19+
20+ // Act
21+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
22+
23+ // Assert
24+ var approver = new ExplicitApprover ( ) ;
25+ approver . VerifyJson ( serialized ) ;
26+ }
27+
28+ [ Fact ]
29+ public void Should_serialize_message_with_one_of_when_value_is_not_set ( )
30+ {
31+ // Arrange
32+ var msg = new MessageWithOneOf ( ) ;
33+
34+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
35+
36+ // Act
37+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
38+
39+ // Assert
40+ var approver = new ExplicitApprover ( ) ;
41+ approver . VerifyJson ( serialized ) ;
42+ }
43+
44+ [ Fact ]
45+ public void Should_serialize_and_deserialize_message_with_one_of_when_value_is_set ( )
46+ {
47+ // Arrange
48+ var msg = new MessageWithOneOf
49+ {
50+ Int64PropertyValue = 5
51+ } ;
52+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
53+
54+ // Act
55+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
56+ var deserialized = JsonSerializer . Deserialize < MessageWithOneOf > ( serialized , jsonSerializerOptions ) ;
57+
58+ // Assert
59+ deserialized . ShouldNotBeNull ( ) ;
60+ deserialized . Int32PropertyValue . ShouldBe ( msg . Int32PropertyValue ) ;
61+ deserialized . Int64PropertyValue . ShouldBe ( msg . Int64PropertyValue ) ;
62+ deserialized . PropertyCase . ShouldBe ( msg . PropertyCase ) ;
63+ }
64+
65+ [ Fact ]
66+ public void Should_serialize_and_deserialize_message_with_one_of_when_value_is_not_set ( )
67+ {
68+ // Arrange
69+ var msg = new MessageWithOneOf ( ) ;
70+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
71+
72+ // Act
73+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
74+ var deserialized = JsonSerializer . Deserialize < MessageWithOneOf > ( serialized , jsonSerializerOptions ) ;
75+
76+ // Assert
77+ deserialized . ShouldNotBeNull ( ) ;
78+ deserialized . Int32PropertyValue . ShouldBe ( msg . Int32PropertyValue ) ;
79+ deserialized . Int64PropertyValue . ShouldBe ( msg . Int64PropertyValue ) ;
80+ deserialized . PropertyCase . ShouldBe ( msg . PropertyCase ) ;
81+ }
82+
83+ [ Fact ]
84+ public void Should_serialize_message_with_optional_property_when_value_is_set ( )
85+ {
86+ // Arrange
87+ var msg = new MessageWithOptionalProperty
88+ {
89+ Int32Property = 5
90+ } ;
91+
92+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
93+
94+ // Act
95+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
96+
97+ // Assert
98+ var approver = new ExplicitApprover ( ) ;
99+ approver . VerifyJson ( serialized ) ;
100+ }
101+
102+ [ Fact ]
103+ public void Should_serialize_message_with_optional_property_when_value_is_not_set ( )
104+ {
105+ // Arrange
106+ var msg = new MessageWithOptionalProperty ( ) ;
107+
108+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
109+
110+ // Act
111+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
112+
113+ // Assert
114+ var approver = new ExplicitApprover ( ) ;
115+ approver . VerifyJson ( serialized ) ;
116+ }
117+
118+ [ Fact ]
119+ public void Should_serialize_and_deserialize_message_with_optional_property_when_value_is_set ( )
120+ {
121+ // Arrange
122+ var msg = new MessageWithOptionalProperty ( )
123+ {
124+ Int32Property = 5
125+ } ;
126+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
127+
128+ // Act
129+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
130+ var deserialized = JsonSerializer . Deserialize < MessageWithOptionalProperty > ( serialized , jsonSerializerOptions ) ;
131+
132+ // Assert
133+ deserialized . ShouldNotBeNull ( ) ;
134+ deserialized . Int32Property . ShouldBe ( msg . Int32Property ) ;
135+ deserialized . HasInt32Property . ShouldBe ( msg . HasInt32Property ) ;
136+ }
137+
138+ [ Fact ]
139+ public void Should_serialize_and_deserialize_message_with_optional_property_when_value_is_not_set ( )
140+ {
141+ // Arrange
142+ var msg = new MessageWithOptionalProperty ( ) ;
143+ var jsonSerializerOptions = TestHelper . CreateJsonSerializerOptions ( ) ;
144+
145+ // Act
146+ var serialized = JsonSerializer . Serialize ( msg , jsonSerializerOptions ) ;
147+ var deserialized = JsonSerializer . Deserialize < MessageWithOptionalProperty > ( serialized , jsonSerializerOptions ) ;
148+
149+ // Assert
150+ deserialized . ShouldNotBeNull ( ) ;
151+ deserialized . Int32Property . ShouldBe ( msg . Int32Property ) ;
152+ deserialized . HasInt32Property . ShouldBe ( msg . HasInt32Property ) ;
153+ }
154+ }
0 commit comments