@@ -31,9 +31,9 @@ namespace RestSharp.Tests
3131{
3232 public class JsonTests
3333 {
34- private const string AlternativeCulture = "pt-PT" ;
34+ private const string AlternativeCulture = "pt-PT" ;
3535
36- private const string GuidString = "AC1FC4BC-087A-4242-B8EE-C53EBE9887A5" ;
36+ private const string GuidString = "AC1FC4BC-087A-4242-B8EE-C53EBE9887A5" ;
3737
3838 [ Fact ]
3939 public void Can_Deserialize_4sq_Json_With_Root_Element_Specified ( )
@@ -190,8 +190,8 @@ public void Can_Deserialize_Elements_to_Nullable_Values()
190190 Assert . Equal ( 123 , output . Id ) ;
191191 Assert . NotNull ( output . StartDate ) ;
192192 Assert . Equal (
193- new DateTime ( 2010 , 2 , 21 , 9 , 35 , 00 , DateTimeKind . Utc ) . ToString ( "u" ) ,
194- output . StartDate . Value . ToString ( "u" ) ) ;
193+ new DateTime ( 2010 , 2 , 21 , 9 , 35 , 00 , DateTimeKind . Utc ) ,
194+ output . StartDate . Value ) ;
195195 Assert . Equal ( new Guid ( GuidString ) , output . UniqueId ) ;
196196 }
197197
@@ -315,14 +315,14 @@ public void Can_Deserialize_With_Default_Root()
315315 Assert . Equal ( "Foe 2" , p . Foes [ "dict2" ] . Nickname ) ;
316316 }
317317
318- [ Fact ]
319- public void Can_Deserialize_With_Default_Root_Alternative_Culture ( )
320- {
321- using ( new CultureChange ( AlternativeCulture ) )
322- {
323- Can_Deserialize_With_Default_Root ( ) ;
324- }
325- }
318+ [ Fact ]
319+ public void Can_Deserialize_With_Default_Root_Alternative_Culture ( )
320+ {
321+ using ( new CultureChange ( AlternativeCulture ) )
322+ {
323+ Can_Deserialize_With_Default_Root ( ) ;
324+ }
325+ }
326326
327327 [ Fact ]
328328 public void Can_Deserialize_Names_With_Underscores_With_Default_Root ( )
@@ -353,14 +353,14 @@ public void Can_Deserialize_Names_With_Underscores_With_Default_Root()
353353 Assert . Equal ( "Foe 2" , p . Foes [ "dict2" ] . Nickname ) ;
354354 }
355355
356- [ Fact ]
357- public void Can_Deserialize_Names_With_Underscores_With_Default_Root_Alternative_Culture ( )
358- {
359- using ( new CultureChange ( AlternativeCulture ) )
360- {
361- Can_Deserialize_Names_With_Underscores_With_Default_Root ( ) ;
362- }
363- }
356+ [ Fact ]
357+ public void Can_Deserialize_Names_With_Underscores_With_Default_Root_Alternative_Culture ( )
358+ {
359+ using ( new CultureChange ( AlternativeCulture ) )
360+ {
361+ Can_Deserialize_Names_With_Underscores_With_Default_Root ( ) ;
362+ }
363+ }
364364
365365 [ Fact ]
366366 public void Can_Deserialize_Names_With_Dashes_With_Default_Root ( )
@@ -391,14 +391,14 @@ public void Can_Deserialize_Names_With_Dashes_With_Default_Root()
391391 Assert . Equal ( "Foe 2" , p . Foes [ "dict2" ] . Nickname ) ;
392392 }
393393
394- [ Fact ]
395- public void Can_Deserialize_Names_With_Dashes_With_Default_Root_Alternative_Culture ( )
396- {
397- using ( new CultureChange ( AlternativeCulture ) )
398- {
399- Can_Deserialize_Names_With_Dashes_With_Default_Root ( ) ;
400- }
401- }
394+ [ Fact ]
395+ public void Can_Deserialize_Names_With_Dashes_With_Default_Root_Alternative_Culture ( )
396+ {
397+ using ( new CultureChange ( AlternativeCulture ) )
398+ {
399+ Can_Deserialize_Names_With_Dashes_With_Default_Root ( ) ;
400+ }
401+ }
402402
403403 [ Fact ]
404404 public void Ignore_Protected_Property_That_Exists_In_Data ( )
@@ -423,22 +423,19 @@ public void Ignore_ReadOnly_Property_That_Exists_In_Data()
423423 }
424424
425425 [ Fact ]
426- public void Can_Deserialize_TimeSpan ( )
427- {
428- var doc = File . ReadAllText ( Path . Combine ( "SampleData" , "timespans.txt" ) ) ;
429- var d = new JsonDeserializer ( ) ;
430- var response = new RestResponse { Content = doc } ;
431- var payload = d . Deserialize < TimeSpanTestStructure > ( response ) ;
426+ public void Can_Deserialize_TimeSpan ( )
427+ {
428+ var payload = GetPayLoad < TimeSpanTestStructure > ( "timespans.txt" ) ;
432429
433- Assert . Equal ( new TimeSpan ( 468006 ) , payload . Tick ) ;
434- Assert . Equal ( new TimeSpan ( 0 , 0 , 0 , 0 , 125 ) , payload . Millisecond ) ;
435- Assert . Equal ( new TimeSpan ( 0 , 0 , 8 ) , payload . Second ) ;
436- Assert . Equal ( new TimeSpan ( 0 , 55 , 2 ) , payload . Minute ) ;
437- Assert . Equal ( new TimeSpan ( 21 , 30 , 7 ) , payload . Hour ) ;
438- Assert . Null ( payload . NullableWithoutValue ) ;
439- Assert . NotNull ( payload . NullableWithValue ) ;
440- Assert . Equal ( new TimeSpan ( 21 , 30 , 7 ) , payload . NullableWithValue . Value ) ;
441- }
430+ Assert . Equal ( new TimeSpan ( 468006 ) , payload . Tick ) ;
431+ Assert . Equal ( new TimeSpan ( 0 , 0 , 0 , 0 , 125 ) , payload . Millisecond ) ;
432+ Assert . Equal ( new TimeSpan ( 0 , 0 , 8 ) , payload . Second ) ;
433+ Assert . Equal ( new TimeSpan ( 0 , 55 , 2 ) , payload . Minute ) ;
434+ Assert . Equal ( new TimeSpan ( 21 , 30 , 7 ) , payload . Hour ) ;
435+ Assert . Null ( payload . NullableWithoutValue ) ;
436+ Assert . NotNull ( payload . NullableWithValue ) ;
437+ Assert . Equal ( new TimeSpan ( 21 , 30 , 7 ) , payload . NullableWithValue . Value ) ;
438+ }
442439
443440 [ Fact ]
444441 public void Can_Deserialize_Iso_Json_Dates ( )
@@ -465,88 +462,97 @@ public void Can_Deserialize_Unix_Json_Dates()
465462 [ Fact ]
466463 public void Can_Deserialize_JsonNet_Dates ( )
467464 {
468- var doc = File . ReadAllText ( Path . Combine ( "SampleData" , "person.json.txt" ) ) ;
469- var d = new JsonDeserializer ( ) ;
470- var response = new RestResponse { Content = doc } ;
471- var person = d . Deserialize < PersonForJson > ( response ) ;
465+ var person = GetPayLoad < PersonForJson > ( "person.json.txt" ) ;
472466
473467 Assert . Equal (
474- new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , DateTimeKind . Utc ) . ToString ( "u" ) ,
475- person . StartDate . ToString ( "u" ) ) ;
468+ new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , 929 , DateTimeKind . Utc ) ,
469+ person . StartDate ) ;
476470 }
477471
478472 [ Fact ]
479473 public void Can_Deserialize_DateTime ( )
480474 {
481- var doc = File . ReadAllText ( Path . Combine ( "SampleData" , "datetimes.txt" ) ) ;
482- var d = new JsonDeserializer ( ) ;
483- var response = new RestResponse { Content = doc } ;
484- var payload = d . Deserialize < DateTimeTestStructure > ( response ) ;
475+ var payload = GetPayLoad < DateTimeTestStructure > ( "datetimes.txt" ) ;
485476
486477 Assert . Equal (
487- new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , DateTimeKind . Utc ) . ToString ( "u" ) ,
488- payload . DateTime . ToString ( "u" ) ) ;
478+ new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , 929 , DateTimeKind . Utc ) ,
479+ payload . DateTime ) ;
489480 }
490481
491482 [ Fact ]
492483 public void Can_Deserialize_Nullable_DateTime_With_Value ( )
493484 {
494- var doc = File . ReadAllText ( Path . Combine ( "SampleData" , "datetimes.txt" ) ) ;
495- var d = new JsonDeserializer ( ) ;
496- var response = new RestResponse { Content = doc } ;
497- var payload = d . Deserialize < DateTimeTestStructure > ( response ) ;
485+ var payload = GetPayLoad < DateTimeTestStructure > ( "datetimes.txt" ) ;
498486
499487 Assert . NotNull ( payload . NullableDateTimeWithValue ) ;
500488 Assert . Equal (
501- new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , DateTimeKind . Utc ) . ToString ( "u" ) ,
502- payload . NullableDateTimeWithValue . Value . ToString ( "u" ) ) ;
489+ new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , 929 , DateTimeKind . Utc ) ,
490+ payload . NullableDateTimeWithValue . Value ) ;
503491 }
504492
505493 [ Fact ]
506494 public void Can_Deserialize_Nullable_DateTime_With_Null ( )
507495 {
508- var doc = File . ReadAllText ( Path . Combine ( "SampleData" , "datetimes.txt" ) ) ;
509- var d = new JsonDeserializer ( ) ;
510- var response = new RestResponse { Content = doc } ;
511- var payload = d . Deserialize < DateTimeTestStructure > ( response ) ;
496+ var payload = GetPayLoad < DateTimeTestStructure > ( "datetimes.txt" ) ;
512497
513498 Assert . Null ( payload . NullableDateTimeWithNull ) ;
514499 }
515500
516501 [ Fact ]
517502 public void Can_Deserialize_DateTimeOffset ( )
518503 {
519- var doc = File . ReadAllText ( Path . Combine ( "SampleData" , "datetimes.txt" ) ) ;
520- var d = new JsonDeserializer ( ) ;
521- var response = new RestResponse { Content = doc } ;
522- var payload = d . Deserialize < DateTimeTestStructure > ( response ) ;
504+ var payload = GetPayLoad < DateTimeTestStructure > ( "datetimes.txt" ) ;
523505
524506 Assert . Equal (
525- new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , DateTimeKind . Utc ) . ToString ( "u" ) ,
526- payload . DateTimeOffset . ToString ( "u" ) ) ;
507+ new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , 929 , DateTimeKind . Utc ) ,
508+ payload . DateTimeOffset ) ;
509+ }
510+
511+ [ Fact ]
512+ public void Can_Deserialize_Iso8601DateTimeLocal ( )
513+ {
514+ var payload = GetPayLoad < Iso8601DateTimeTestStructure > ( "iso8601datetimes.txt" ) ;
515+
516+ Assert . Equal (
517+ new DateTime ( 2012 , 7 , 19 , 10 , 23 , 25 , DateTimeKind . Utc ) ,
518+ payload . DateTimeLocal ) ;
519+ }
520+
521+ [ Fact ]
522+ public void Can_Deserialize_Iso8601DateTimeZulu ( )
523+ {
524+ var payload = GetPayLoad < Iso8601DateTimeTestStructure > ( "iso8601datetimes.txt" ) ;
525+
526+ Assert . Equal (
527+ new DateTime ( 2012 , 7 , 19 , 10 , 23 , 25 , 544 , DateTimeKind . Utc ) ,
528+ payload . DateTimeUtc . ToUniversalTime ( ) ) ;
529+ }
530+
531+ [ Fact ]
532+ public void Can_Deserialize_Iso8601DateTimeWithOffset ( )
533+ {
534+ var payload = GetPayLoad < Iso8601DateTimeTestStructure > ( "iso8601datetimes.txt" ) ;
535+
536+ Assert . Equal (
537+ new DateTime ( 2012 , 7 , 19 , 10 , 23 , 25 , 544 , DateTimeKind . Utc ) ,
538+ payload . DateTimeWithOffset . ToUniversalTime ( ) ) ;
527539 }
528540
529541 [ Fact ]
530542 public void Can_Deserialize_Nullable_DateTimeOffset_With_Value ( )
531543 {
532- var doc = File . ReadAllText ( Path . Combine ( "SampleData" , "datetimes.txt" ) ) ;
533- var d = new JsonDeserializer ( ) ;
534- var response = new RestResponse { Content = doc } ;
535- var payload = d . Deserialize < DateTimeTestStructure > ( response ) ;
544+ var payload = GetPayLoad < DateTimeTestStructure > ( "datetimes.txt" ) ;
536545
537546 Assert . NotNull ( payload . NullableDateTimeOffsetWithValue ) ;
538547 Assert . Equal (
539- new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , DateTimeKind . Utc ) . ToString ( "u" ) ,
540- payload . NullableDateTimeOffsetWithValue . Value . ToString ( "u" ) ) ;
548+ new DateTime ( 2011 , 6 , 30 , 8 , 15 , 46 , 929 , DateTimeKind . Utc ) ,
549+ payload . NullableDateTimeOffsetWithValue ) ;
541550 }
542551
543552 [ Fact ]
544553 public void Can_Deserialize_Nullable_DateTimeOffset_With_Null ( )
545554 {
546- var doc = File . ReadAllText ( Path . Combine ( "SampleData" , "datetimes.txt" ) ) ;
547- var d = new JsonDeserializer ( ) ;
548- var response = new RestResponse { Content = doc } ;
549- var payload = d . Deserialize < DateTimeTestStructure > ( response ) ;
555+ var payload = GetPayLoad < DateTimeTestStructure > ( "datetimes.txt" ) ;
550556
551557 Assert . Null ( payload . NullableDateTimeOffsetWithNull ) ;
552558 }
@@ -759,5 +765,13 @@ public string CreateDynamicJsonStringDictionary ()
759765 doc [ "ThingBlue" ] = new JObject ( new JProperty ( "Name" , "ThingBlue" ) , new JProperty ( "Color" , "Blue" ) ) ;
760766 return doc . ToString ( ) ;
761767 }
768+
769+ private T GetPayLoad < T > ( string fileName )
770+ {
771+ var doc = File . ReadAllText ( Path . Combine ( "SampleData" , fileName ) ) ;
772+ var response = new RestResponse { Content = doc } ;
773+ var d = new JsonDeserializer ( ) ;
774+ return d . Deserialize < T > ( response ) ;
775+ }
762776 }
763777}
0 commit comments