8 public class DateSliderTests
10 WvLog log
= new WvLog("log");
12 static DateTime
date(string s
)
14 return DateTime
.Parse(s
);
17 [Test
] public void dateslider_test()
19 WVPASSEQ((int)DayOfWeek
.Sunday
, 0);
20 WVPASSEQ((int)DayOfWeek
.Monday
, 1);
22 DateSlider x
= new DateSlider();
23 double[] times
= {6,5,5,5,5,5,9}
;
24 x
= x
.new_hours_per_day(times
);
25 DateSlider y
= (DateSlider
)x
.Clone();
26 x
.hours_per_day
[3] = 77;
28 WVPASSEQ(y
.hours_per_day
[6], 9);
29 WVPASSEQ(y
.hours_per_day
[3], 5);
30 WVPASSEQ(x
.hours_per_day
[3], 77);
31 WVPASSEQ(times
[3], 99);
34 [Test
] public void dateslider_add_test()
36 DateTime point
= date("2006-10-10 00:00:00");
37 DateSlider slider
= new DateSlider();
40 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(40)),
41 date("2006-10-17 00:00:00"));
42 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(-40)),
43 date("2006-10-03 00:00:00"));
44 slider
= slider
.new_loadfactor(2);
45 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(40)),
46 date("2006-10-24 00:00:00"));
47 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(-40)),
48 date("2006-09-26 00:00:00"));
49 slider
= slider
.new_loadfactor(1);
50 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(80)),
51 date("2006-10-24 00:00:00"));
52 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(-80)),
53 date("2006-09-26 00:00:00"));
55 // day multiples. 2006-10-10 is Tuesday == offset 2.
56 double[] a
= {0,1,2,3,4,5,6}
; // 21 hours per week
57 slider
= slider
.new_hours_per_day(a
);
58 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(5)),
59 date("2006-10-12 00:00:00"));
60 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(-7)),
61 date("2006-10-07 00:00:00"));
62 slider
= slider
.new_loadfactor(2);
63 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(2.5)),
64 date("2006-10-12 00:00:00"));
65 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(-3.5)),
66 date("2006-10-07 00:00:00"));
67 slider
= slider
.new_loadfactor(1);
70 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(2*21 + 4)),
71 date("2006-10-25 16:00:00"));
72 WVPASSEQ(slider
.add(point
, TimeSpan
.FromHours(-2*21 - 4)),
73 date("2006-09-23 12:00:00"));
76 [Test
] public void dateslider_add_test2()
78 DateSlider slider
= new DateSlider();
79 DateTime dt1
= date("1997-01-29").AddHours(0.25*24);
80 DateTime dt2
= date("1997-01-29").AddHours(0.75*24);
81 DateTime odt1
= slider
.add(dt1
, TimeSpan
.FromHours(4));
82 DateTime odt2
= slider
.add(dt2
, TimeSpan
.FromHours(-4));
83 log
.print("Start: {0} - {1}\n", dt1
, dt2
);
84 WVPASSEQ(dt2
.ToString(), odt1
.ToString());
85 WVPASSEQ(dt1
.ToString(), odt2
.ToString());
88 [Test
] public void dateslider_add_test3()
90 double[] hpd
= {8,8,8,8,8,8,8}
;
91 DateSlider slider
= new DateSlider().new_hours_per_day(hpd
);
92 DateTime point
= date("2006-10-10 00:00:00");
94 point
= slider
.add(point
, -TimeSpan
.FromHours(4));
95 WVPASSEQ(point
, date("2006-10-09 12:00:00"));
96 point
= slider
.add(point
, -TimeSpan
.FromHours(3));
97 WVPASSEQ(point
, date("2006-10-09 03:00:00"));
98 point
= slider
.add(point
, -TimeSpan
.FromHours(2));
99 WVPASSEQ(point
, date("2006-10-08 21:00:00"));
100 point
= slider
.add(point
, -TimeSpan
.FromHours(1));
101 WVPASSEQ(point
, date("2006-10-08 18:00:00"));
104 [Test
] public void dateslider_diff_test()
106 double[] hpd
= {0,1,2,3,4,5,6}
; // 21 hours per week
108 = (new DateSlider()).new_hours_per_day(hpd
).new_loadfactor(0.5);
109 DateTime point
= date("2006-10-10 00:00:00");
112 WVPASSEQ(slider
.diff(date("2006-10-17"), point
),
113 TimeSpan
.FromHours(42));
114 WVPASSEQ(slider
.diff(date("2006-10-24"), point
),
115 TimeSpan
.FromHours(2*42));
117 // day multiples. 2006-10-10 is a Tuesday.
118 WVPASSEQ(slider
.diff(date("2006-10-12"), point
),
119 TimeSpan
.FromHours(10));
120 WVPASSEQ(slider
.diff(date("2006-10-16"), point
),
121 TimeSpan
.FromHours(40));
124 WVPASSEQ(slider
.diff(date("2006-10-12 12:00:00"), point
),
125 TimeSpan
.FromHours(14));
126 WVPASSEQ(slider
.diff(date("2006-10-13 14:24:00"), point
),
127 TimeSpan
.FromHours(24));
129 // fractional day landing on a zero-day, so result has to be
131 WVPASSEQ(slider
.diff(date("2006-10-15 16:00:00"), point
),
132 TimeSpan
.FromHours(40));