@@ -254,6 +254,48 @@ public void Can_Deserialize_Elements_to_Nullable_Values()
254
254
Assert . Equal ( new Guid ( GuidString ) , output . UniqueId ) ;
255
255
}
256
256
257
+ [ Fact ]
258
+ public void Can_Deserialize_TimeSpan ( )
259
+ {
260
+ var culture = CultureInfo . InvariantCulture ;
261
+ var doc = new XDocument ( culture ) ;
262
+
263
+ TimeSpan ? nullTimespan = null ;
264
+ TimeSpan ? nullValueTimeSpan = new TimeSpan ( 21 , 30 , 7 ) ;
265
+
266
+ var root = new XElement ( "Person" ) ;
267
+ root . Add ( new XElement ( "Tick" , new TimeSpan ( 468006 ) ) ) ;
268
+ root . Add ( new XElement ( "Millisecond" , new TimeSpan ( 0 , 0 , 0 , 0 , 125 ) ) ) ;
269
+ root . Add ( new XElement ( "Second" , new TimeSpan ( 0 , 0 , 8 ) ) ) ;
270
+ root . Add ( new XElement ( "Minute" , new TimeSpan ( 0 , 55 , 2 ) ) ) ;
271
+ root . Add ( new XElement ( "Hour" , new TimeSpan ( 21 , 30 , 7 ) ) ) ;
272
+ root . Add ( new XElement ( "NullableWithoutValue" , nullTimespan ) ) ;
273
+ root . Add ( new XElement ( "NullableWithValue" , nullValueTimeSpan ) ) ;
274
+
275
+ doc . Add ( root ) ;
276
+
277
+ var xml = new XmlDeserializer
278
+ {
279
+ Culture = culture ,
280
+ } ;
281
+
282
+ var response = new RestResponse { Content = doc . ToString ( ) } ;
283
+
284
+ var d = new XmlDeserializer ( )
285
+ {
286
+ Culture = culture ,
287
+ } ;
288
+ var payload = d . Deserialize < TimeSpanTestStructure > ( response ) ;
289
+ Assert . Equal ( new TimeSpan ( 468006 ) , payload . Tick ) ;
290
+ Assert . Equal ( new TimeSpan ( 0 , 0 , 0 , 0 , 125 ) , payload . Millisecond ) ;
291
+ Assert . Equal ( new TimeSpan ( 0 , 0 , 8 ) , payload . Second ) ;
292
+ Assert . Equal ( new TimeSpan ( 0 , 55 , 2 ) , payload . Minute ) ;
293
+ Assert . Equal ( new TimeSpan ( 21 , 30 , 7 ) , payload . Hour ) ;
294
+ Assert . Null ( payload . NullableWithoutValue ) ;
295
+ Assert . NotNull ( payload . NullableWithValue ) ;
296
+ Assert . Equal ( new TimeSpan ( 21 , 30 , 7 ) , payload . NullableWithValue . Value ) ;
297
+ }
298
+
257
299
[ Fact ]
258
300
public void Can_Deserialize_Custom_Formatted_Date ( )
259
301
{
0 commit comments