@@ -83,6 +83,83 @@ public void Can_Deserialize()
8383 Assert . AreEqual ( expectedLineString . Coordinates [ 0 ] . Longitude , actualLineString . Coordinates [ 0 ] . Longitude ) ;
8484 }
8585
86+ [ Test ]
87+ public void Can_Deserialize_Strings ( )
88+ {
89+ var coordinates = new List < IPosition >
90+ {
91+ new Position ( 52.370725881211314 , 4.889259338378906 ) ,
92+ new Position ( 52.3711451105601 , 4.895267486572266 ) ,
93+ new Position ( 52.36931095278263 , 4.892091751098633 ) ,
94+ new Position ( 52.370725881211314 , 4.889259338378906 )
95+ } ;
96+
97+ var expectedLineString = new LineString ( coordinates ) ;
98+
99+ var json = GetExpectedJson ( ) ;
100+ var options = new JsonSerializerOptions { NumberHandling = System . Text . Json . Serialization . JsonNumberHandling . AllowReadingFromString } ;
101+ var actualLineString = JsonSerializer . Deserialize < LineString > ( json , options ) ;
102+
103+ Assert . AreEqual ( expectedLineString , actualLineString ) ;
104+
105+ Assert . AreEqual ( 4 , actualLineString . Coordinates . Count ) ;
106+ Assert . AreEqual ( expectedLineString . Coordinates [ 0 ] . Latitude , actualLineString . Coordinates [ 0 ] . Latitude ) ;
107+ Assert . AreEqual ( expectedLineString . Coordinates [ 0 ] . Longitude , actualLineString . Coordinates [ 0 ] . Longitude ) ;
108+ }
109+
110+ [ Test ]
111+ public void Can_Deserialize_With_Altitude ( )
112+ {
113+ var coordinates = new List < IPosition >
114+ {
115+ new Position ( 52.370725881211314 , 4.889259338378906 , 10.0 ) ,
116+ new Position ( 52.3711451105601 , 4.895267486572266 , 10.5 ) ,
117+ new Position ( 52.36931095278263 , 4.892091751098633 , null ) ,
118+ new Position ( 52.370725881211314 , 4.889259338378906 , 10.2 )
119+ } ;
120+
121+ var expectedLineString = new LineString ( coordinates ) ;
122+
123+ var json = GetExpectedJson ( ) ;
124+ var actualLineString = JsonSerializer . Deserialize < LineString > ( json ) ;
125+
126+ Assert . AreEqual ( expectedLineString , actualLineString ) ;
127+
128+ Assert . AreEqual ( 4 , actualLineString . Coordinates . Count ) ;
129+ Assert . AreEqual ( expectedLineString . Coordinates [ 0 ] . Latitude , actualLineString . Coordinates [ 0 ] . Latitude ) ;
130+ Assert . AreEqual ( expectedLineString . Coordinates [ 0 ] . Longitude , actualLineString . Coordinates [ 0 ] . Longitude ) ;
131+ Assert . AreEqual ( expectedLineString . Coordinates [ 0 ] . Altitude , actualLineString . Coordinates [ 0 ] . Altitude ) ;
132+ Assert . AreEqual ( expectedLineString . Coordinates [ 2 ] . Altitude , actualLineString . Coordinates [ 2 ] . Altitude ) ;
133+ }
134+
135+ [ Test ]
136+ public void Can_Deserialize_String_Literals ( )
137+ {
138+ var coordinates = new List < IPosition >
139+ {
140+ new Position ( 52.370725881211314 , 4.889259338378906 , double . NegativeInfinity ) ,
141+ new Position ( 52.3711451105601 , 4.895267486572266 , double . PositiveInfinity ) ,
142+ new Position ( 52.36931095278263 , 4.892091751098633 , double . NaN ) ,
143+ new Position ( 52.370725881211314 , 4.889259338378906 , double . NegativeInfinity )
144+ } ;
145+
146+ var expectedLineString = new LineString ( coordinates ) ;
147+
148+ var json = GetExpectedJson ( ) ;
149+ var options = new JsonSerializerOptions { NumberHandling = System . Text . Json . Serialization . JsonNumberHandling . AllowNamedFloatingPointLiterals } ;
150+ var actualLineString = JsonSerializer . Deserialize < LineString > ( json , options ) ;
151+
152+ bool b = expectedLineString . Coordinates [ 0 ] . Equals ( actualLineString . Coordinates [ 0 ] ) ;
153+ Assert . AreEqual ( expectedLineString , actualLineString ) ;
154+
155+ Assert . AreEqual ( 4 , actualLineString . Coordinates . Count ) ;
156+ Assert . AreEqual ( expectedLineString . Coordinates [ 0 ] . Latitude , actualLineString . Coordinates [ 0 ] . Latitude ) ;
157+ Assert . AreEqual ( expectedLineString . Coordinates [ 0 ] . Longitude , actualLineString . Coordinates [ 0 ] . Longitude ) ;
158+ Assert . AreEqual ( expectedLineString . Coordinates [ 0 ] . Altitude , actualLineString . Coordinates [ 0 ] . Altitude ) ;
159+ Assert . AreEqual ( expectedLineString . Coordinates [ 1 ] . Altitude , actualLineString . Coordinates [ 1 ] . Altitude ) ;
160+ Assert . AreEqual ( expectedLineString . Coordinates [ 2 ] . Altitude , actualLineString . Coordinates [ 2 ] . Altitude ) ;
161+ }
162+
86163 [ Test ]
87164 public void Constructor_No_Coordinates_Throws_Exception ( )
88165 {
0 commit comments