@@ -7,34 +7,69 @@ namespace ServiceStack.Text.Tests
7
7
[ TestFixture ]
8
8
public class TimeSpanConverterTests
9
9
{
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
+
10
20
[ Test ]
11
21
public void Can_Serialize_TimeSpan ( )
12
22
{
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
+
21
41
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" ) ) ;
23
45
}
24
46
25
47
[ Test ]
26
48
public void Can_deserialize_TimeSpan ( )
27
49
{
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
+
36
69
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 ) ) ;
38
73
}
39
74
}
40
75
}
0 commit comments