@@ -7,34 +7,69 @@ namespace ServiceStack.Text.Tests
77 [ TestFixture ]
88 public class TimeSpanConverterTests
99 {
10+ private readonly TimeSpan oneTick = new TimeSpan ( 1 ) ;
11+ private readonly TimeSpan oneDay = new TimeSpan ( 1 , 0 , 0 , 0 ) ;
12+ private readonly TimeSpan oneHour = new TimeSpan ( 1 , 0 , 0 ) ;
13+ private readonly TimeSpan oneMinute = new TimeSpan ( 0 , 1 , 0 ) ;
14+ private readonly TimeSpan oneSecond = new TimeSpan ( 0 , 0 , 1 ) ;
15+ private readonly TimeSpan oneMilliSecond = new TimeSpan ( 0 , 0 , 0 , 0 , 1 ) ;
16+ private readonly TimeSpan oneDayHourMinuteSecondMilliSecond = new TimeSpan ( 1 , 1 , 1 , 1 , 1 ) ;
17+ private readonly TimeSpan threeThousandSixHundredAndFiveDays = TimeSpan . FromDays ( 3605 ) ;
18+ private readonly TimeSpan arbitraryTimeSpan = new TimeSpan ( 1 , 2 , 3 , 4 , 567 ) . Add ( TimeSpan . FromTicks ( 1 ) ) ;
19+
1020 [ Test ]
1121 public void Can_Serialize_TimeSpan ( )
1222 {
13- Assert . That ( TimeSpanConverter . ToXsdDuration ( new TimeSpan ( 1 , 0 , 0 , 0 ) ) , Is . EqualTo ( "P1D" ) ) ;
14- Assert . That ( TimeSpanConverter . ToXsdDuration ( new TimeSpan ( 1 , 0 , 0 ) ) , Is . EqualTo ( "PT1H" ) ) ;
15- Assert . That ( TimeSpanConverter . ToXsdDuration ( new TimeSpan ( 0 , 1 , 0 ) ) , Is . EqualTo ( "PT1M" ) ) ;
16- Assert . That ( TimeSpanConverter . ToXsdDuration ( new TimeSpan ( 0 , 0 , 1 ) ) , Is . EqualTo ( "PT1S" ) ) ;
17- Assert . That ( TimeSpanConverter . ToXsdDuration ( new TimeSpan ( 0 , 0 , 0 , 0 , 1 ) ) , Is . EqualTo ( "PT0.001S" ) ) ;
18- Assert . That ( TimeSpanConverter . ToXsdDuration ( new TimeSpan ( 1 , 1 , 1 , 1 , 1 ) ) , Is . EqualTo ( "P1DT1H1M1.001S" ) ) ;
19-
20- Assert . That ( TimeSpanConverter . ToXsdDuration ( new TimeSpan ( 1 ) ) , Is . EqualTo ( "PT0.0000001S" ) ) ;
23+ Assert . That ( TimeSpanConverter . ToXsdDuration ( oneDay ) , Is . EqualTo ( "P1D" ) ) ;
24+ Assert . That ( TimeSpanConverter . ToXsdDuration ( oneHour ) , Is . EqualTo ( "PT1H" ) ) ;
25+ Assert . That ( TimeSpanConverter . ToXsdDuration ( oneMinute ) , Is . EqualTo ( "PT1M" ) ) ;
26+ Assert . That ( TimeSpanConverter . ToXsdDuration ( oneSecond ) , Is . EqualTo ( "PT1S" ) ) ;
27+ Assert . That ( TimeSpanConverter . ToXsdDuration ( oneMilliSecond ) , Is . EqualTo ( "PT0.001S" ) ) ;
28+ Assert . That ( TimeSpanConverter . ToXsdDuration ( oneDayHourMinuteSecondMilliSecond ) , Is . EqualTo ( "P1DT1H1M1.001S" ) ) ;
29+ Assert . That ( TimeSpanConverter . ToXsdDuration ( arbitraryTimeSpan ) , Is . EqualTo ( "P1DT2H3M4.5670001S" ) ) ;
30+
31+ Assert . That ( TimeSpanConverter . ToXsdDuration ( - oneDay ) , Is . EqualTo ( "-P1D" ) ) ;
32+ Assert . That ( TimeSpanConverter . ToXsdDuration ( - oneHour ) , Is . EqualTo ( "-PT1H" ) ) ;
33+ Assert . That ( TimeSpanConverter . ToXsdDuration ( - oneMinute ) , Is . EqualTo ( "-PT1M" ) ) ;
34+ Assert . That ( TimeSpanConverter . ToXsdDuration ( - oneSecond ) , Is . EqualTo ( "-PT1S" ) ) ;
35+ Assert . That ( TimeSpanConverter . ToXsdDuration ( - oneMilliSecond ) , Is . EqualTo ( "-PT0.001S" ) ) ;
36+ Assert . That ( TimeSpanConverter . ToXsdDuration ( - arbitraryTimeSpan ) , Is . EqualTo ( "-P1DT2H3M4.5670001S" ) ) ;
37+
38+ Assert . That ( TimeSpanConverter . ToXsdDuration ( oneTick ) , Is . EqualTo ( "PT0.0000001S" ) ) ;
39+ Assert . That ( TimeSpanConverter . ToXsdDuration ( - oneTick ) , Is . EqualTo ( "-PT0.0000001S" ) ) ;
40+
2141 Assert . That ( TimeSpanConverter . ToXsdDuration ( TimeSpan . Zero ) , Is . EqualTo ( "PT0S" ) ) ;
22- Assert . That ( TimeSpanConverter . ToXsdDuration ( new DateTime ( 2010 , 1 , 1 ) - new DateTime ( 2000 , 1 , 1 ) ) , Is . EqualTo ( "P3653D" ) ) ;
42+
43+ Assert . That ( TimeSpanConverter . ToXsdDuration ( threeThousandSixHundredAndFiveDays ) , Is . EqualTo ( "P3605D" ) ) ;
44+ Assert . That ( TimeSpanConverter . ToXsdDuration ( - threeThousandSixHundredAndFiveDays ) , Is . EqualTo ( "-P3605D" ) ) ;
2345 }
2446
2547 [ Test ]
2648 public void Can_deserialize_TimeSpan ( )
2749 {
28- Assert . That ( TimeSpanConverter . FromXsdDuration ( "P1D" ) , Is . EqualTo ( new TimeSpan ( 1 , 0 , 0 , 0 ) ) ) ;
29- Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT1H" ) , Is . EqualTo ( new TimeSpan ( 1 , 0 , 0 ) ) ) ;
30- Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT1M" ) , Is . EqualTo ( new TimeSpan ( 0 , 1 , 0 ) ) ) ;
31- Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT1S" ) , Is . EqualTo ( new TimeSpan ( 0 , 0 , 1 ) ) ) ;
32- Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT0.001S" ) , Is . EqualTo ( new TimeSpan ( 0 , 0 , 0 , 0 , 1 ) ) ) ;
33- Assert . That ( TimeSpanConverter . FromXsdDuration ( "P1DT1H1M1.001S" ) , Is . EqualTo ( new TimeSpan ( 1 , 1 , 1 , 1 , 1 ) ) ) ;
34-
35- Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT0.0000001S" ) , Is . EqualTo ( new TimeSpan ( 1 ) ) ) ;
50+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "P1D" ) , Is . EqualTo ( oneDay ) ) ;
51+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT1H" ) , Is . EqualTo ( oneHour ) ) ;
52+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT1M" ) , Is . EqualTo ( oneMinute ) ) ;
53+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT1S" ) , Is . EqualTo ( oneSecond ) ) ;
54+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT0.001S" ) , Is . EqualTo ( oneMilliSecond ) ) ;
55+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "P1DT1H1M1.001S" ) , Is . EqualTo ( oneDayHourMinuteSecondMilliSecond ) ) ;
56+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "P1DT2H3M4.5670001S" ) , Is . EqualTo ( arbitraryTimeSpan ) ) ;
57+
58+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "-P1D" ) , Is . EqualTo ( - oneDay ) ) ;
59+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "-PT1H" ) , Is . EqualTo ( - oneHour ) ) ;
60+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "-PT1M" ) , Is . EqualTo ( - oneMinute ) ) ;
61+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "-PT1S" ) , Is . EqualTo ( - oneSecond ) ) ;
62+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "-PT0.001S" ) , Is . EqualTo ( - oneMilliSecond ) ) ;
63+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "-P1DT1H1M1.001S" ) , Is . EqualTo ( - oneDayHourMinuteSecondMilliSecond ) ) ;
64+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "-P1DT2H3M4.5670001S" ) , Is . EqualTo ( - arbitraryTimeSpan ) ) ;
65+
66+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT0.0000001S" ) , Is . EqualTo ( oneTick ) ) ;
67+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "-PT0.0000001S" ) , Is . EqualTo ( - oneTick ) ) ;
68+
3669 Assert . That ( TimeSpanConverter . FromXsdDuration ( "PT0S" ) , Is . EqualTo ( TimeSpan . Zero ) ) ;
37- Assert . That ( TimeSpanConverter . FromXsdDuration ( "P3650D" ) , Is . EqualTo ( TimeSpan . FromDays ( 3650 ) ) ) ;
70+
71+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "P3605D" ) , Is . EqualTo ( threeThousandSixHundredAndFiveDays ) ) ;
72+ Assert . That ( TimeSpanConverter . FromXsdDuration ( "-P3605D" ) , Is . EqualTo ( - threeThousandSixHundredAndFiveDays ) ) ;
3873 }
3974 }
4075}
0 commit comments