Fix stringsource parsing to that apostrophes don't count as quotes.
[schedulator.git] / dateslider.t.cs
blob086ca72b02dff4234348e8f740650227b5cf1a85
1 #include "wvtest.cs.h"
2 using System;
3 using Wv.Test;
4 using Wv;
5 using Wv.Schedulator;
7 [TestFixture]
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;
27 times[3] = 99;
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();
39 // week multiples
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);
69 // fractional days
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
107 DateSlider slider
108 = (new DateSlider()).new_hours_per_day(hpd).new_loadfactor(0.5);
109 DateTime point = date("2006-10-10 00:00:00");
111 // week multiples
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));
123 // fractional days
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
130 // inaccurate
131 WVPASSEQ(slider.diff(date("2006-10-15 16:00:00"), point),
132 TimeSpan.FromHours(40));