@@ -254,47 +254,47 @@ 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
- }
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
298
299
299
[ Fact ]
300
300
public void Can_Deserialize_Custom_Formatted_Date ( )
@@ -496,8 +496,8 @@ public void Can_Deserialize_Names_With_Underscores_Without_Matching_Case_On_Defa
496
496
Assert . Equal ( 5 , p . Foes . Count ) ;
497
497
Assert . Equal ( "Yankees" , p . Foes . Team ) ;
498
498
}
499
-
500
- [ Fact ]
499
+
500
+ [ Fact ]
501
501
public void Can_Deserialize_Lower_Cased_Root_Elements_With_Dashes ( )
502
502
{
503
503
var doc = CreateDashesXml ( ) ;
@@ -640,6 +640,41 @@ public void Can_Deserialize_Mixture_Of_Empty_Elements_With_Attributes_And_Popula
640
640
Assert . Null ( output . Id ) ;
641
641
Assert . Null ( output . StartDate ) ;
642
642
Assert . Equal ( new Guid ( GuidString ) , output . UniqueId ) ;
643
+ }
644
+
645
+ [ Fact ]
646
+ public void Can_Deserialize_DateTimeOffset ( )
647
+ {
648
+ var culture = CultureInfo . InvariantCulture ;
649
+ var doc = new XDocument ( culture ) ;
650
+
651
+ DateTimeOffset DateTimeOffset = new DateTimeOffset ( 2013 , 02 , 08 , 9 , 18 , 22 , TimeSpan . FromHours ( 10 ) ) ;
652
+ DateTimeOffset ? NullableDateTimeOffsetWithValue = new DateTimeOffset ( 2013 , 02 , 08 , 9 , 18 , 23 , TimeSpan . FromHours ( 10 ) ) ;
653
+
654
+ var root = new XElement ( "Dates" ) ;
655
+ root . Add ( new XElement ( "DateTimeOffset" , DateTimeOffset ) ) ;
656
+ root . Add ( new XElement ( "NullableDateTimeOffsetWithNull" , string . Empty ) ) ;
657
+ root . Add ( new XElement ( "NullableDateTimeOffsetWithValue" , NullableDateTimeOffsetWithValue ) ) ;
658
+
659
+ doc . Add ( root ) ;
660
+
661
+ var xml = new XmlDeserializer
662
+ {
663
+ Culture = culture ,
664
+ } ;
665
+
666
+ var response = new RestResponse { Content = doc . ToString ( ) } ;
667
+
668
+ var d = new XmlDeserializer ( )
669
+ {
670
+ Culture = culture ,
671
+ } ;
672
+ var payload = d . Deserialize < DateTimeTestStructure > ( response ) ;
673
+ Assert . Equal ( DateTimeOffset , payload . DateTimeOffset ) ;
674
+ Assert . Null ( payload . NullableDateTimeOffsetWithNull ) ;
675
+
676
+ Assert . True ( payload . NullableDateTimeOffsetWithValue . HasValue ) ;
677
+ Assert . Equal ( NullableDateTimeOffsetWithValue , payload . NullableDateTimeOffsetWithValue ) ;
643
678
}
644
679
645
680
private static string CreateUnderscoresXml ( )
@@ -771,10 +806,10 @@ private static string CreateDashesXml()
771
806
doc . Add ( root ) ;
772
807
return doc . ToString ( ) ;
773
808
}
774
-
775
- private static string CreateLowerCasedRootElementWithDashesXml ( )
809
+
810
+ private static string CreateLowerCasedRootElementWithDashesXml ( )
776
811
{
777
- var doc = new XDocument ( ) ;
812
+ var doc = new XDocument ( ) ;
778
813
var root = new XElement ( "incoming-invoices" ,
779
814
new XElement ( "incoming-invoice" ,
780
815
new XElement ( "concept-id" , 45 )
@@ -934,5 +969,6 @@ private static string CreateXmlWithAttributesAndNullValuesAndPopulatedValues()
934
969
935
970
return doc . ToString ( ) ;
936
971
}
972
+
937
973
}
938
974
}
0 commit comments