]> gitweb.factorcode.org Git - factor.git/blob - basis/calendar/calendar-tests.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / basis / calendar / calendar-tests.factor
1 USING: arrays calendar kernel math sequences tools.test
2 continuations system math.order threads accessors
3 random ;
4 IN: calendar.tests
5
6 [ f ] [ 2004 12 32 0   0  0 instant <timestamp> valid-timestamp? ] unit-test
7 [ f ] [ 2004  2 30 0   0  0 instant <timestamp> valid-timestamp? ] unit-test
8 [ f ] [ 2003  2 29 0   0  0 instant <timestamp> valid-timestamp? ] unit-test
9 [ f ] [ 2004 -2  9 0   0  0 instant <timestamp> valid-timestamp? ] unit-test
10 [ f ] [ 2004 12  0 0   0  0 instant <timestamp> valid-timestamp? ] unit-test
11 [ f ] [ 2004 12  1 24  0  0 instant <timestamp> valid-timestamp? ] unit-test
12 [ f ] [ 2004 12  1 23 60  0 instant <timestamp> valid-timestamp? ] unit-test
13 [ f ] [ 2004 12  1 23 59 60 instant <timestamp> valid-timestamp? ] unit-test
14 [ t ] [ now valid-timestamp? ] unit-test
15
16 [ f ] [ 1900 leap-year? ] unit-test
17 [ t ] [ 1904 leap-year? ] unit-test
18 [ t ] [ 2000 leap-year? ] unit-test
19 [ f ] [ 2001 leap-year? ] unit-test
20 [ f ] [ 2006 leap-year? ] unit-test
21
22 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> 1 seconds time+
23         2006 10 10 0 0 1 instant <timestamp> = ] unit-test
24 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> 100 seconds time+
25         2006 10 10 0 1 40 instant <timestamp> = ] unit-test
26 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> -100 seconds time+
27         2006 10 9 23 58 20 instant <timestamp> = ] unit-test
28 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> 86400 seconds time+
29         2006 10 11 0 0 0 instant <timestamp> = ] unit-test
30
31 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> 10 minutes time+
32         2006 10 10 0 10 0 instant <timestamp> = ] unit-test
33 [ +eq+ ] [ 2006 10 10 0 0 0 instant <timestamp> 10.5 minutes time+
34         2006 10 10 0 10 30 instant <timestamp> <=> ] unit-test
35 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> 3/4 minutes time+
36         2006 10 10 0 0 45 instant <timestamp> = ] unit-test
37 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> -3/4 minutes time+
38         2006 10 9 23 59 15 instant <timestamp> = ] unit-test
39
40 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> 7200 minutes time+
41         2006 10 15 0 0 0 instant <timestamp> = ] unit-test
42 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> -10 minutes time+
43         2006 10 9 23 50 0 instant <timestamp> = ] unit-test
44 [ t ] [ 2006 10 10 0 0 0 instant <timestamp> -100 minutes time+
45         2006 10 9 22 20 0 instant <timestamp> = ] unit-test
46
47 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 1 hours time+
48         2006 1 1 1 0 0 instant <timestamp> = ] unit-test
49 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 24 hours time+
50         2006 1 2 0 0 0 instant <timestamp> = ] unit-test
51 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> -24 hours time+
52         2005 12 31 0 0 0 instant <timestamp> = ] unit-test
53 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 12 hours time+
54         2006 1 1 12 0 0 instant <timestamp> = ] unit-test
55 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 72 hours time+
56         2006 1 4 0 0 0 instant <timestamp> = ] unit-test
57
58 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 1 days time+
59         2006 1 2 0 0 0 instant <timestamp> = ] unit-test
60 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> -1 days time+
61         2005 12 31 0 0 0 instant <timestamp> = ] unit-test
62 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 365 days time+
63         2007 1 1 0 0 0 instant <timestamp> = ] unit-test
64 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> -365 days time+
65         2005 1 1 0 0 0 instant <timestamp> = ] unit-test
66 [ t ] [ 2004 1 1 0 0 0 instant <timestamp> 365 days time+
67         2004 12 31 0 0 0 instant <timestamp> = ] unit-test
68 [ t ] [ 2004 1 1 0 0 0 instant <timestamp> 366 days time+
69         2005 1 1 0 0 0 instant <timestamp> = ] unit-test
70
71 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 11 months time+
72         2006 12 1 0 0 0 instant <timestamp> = ] unit-test
73 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 12 months time+
74         2007 1 1 0 0 0 instant <timestamp> = ] unit-test
75 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 24 months time+
76         2008 1 1 0 0 0 instant <timestamp> = ] unit-test
77 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 13 months time+
78         2007 2 1 0 0 0 instant <timestamp> = ] unit-test
79 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 1 months time+
80         2006 2 1 0 0 0 instant <timestamp> = ] unit-test
81 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 0 months time+
82         2006 1 1 0 0 0 instant <timestamp> = ] unit-test
83 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> -1 months time+
84         2005 12 1 0 0 0 instant <timestamp> = ] unit-test
85 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> -2 months time+
86         2005 11 1 0 0 0 instant <timestamp> = ] unit-test
87 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> -13 months time+
88         2004 12 1 0 0 0 instant <timestamp> = ] unit-test
89 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> -24 months time+
90         2004 1 1 0 0 0 instant <timestamp> = ] unit-test
91 [ t ] [ 2004 2 29 0 0 0 instant <timestamp> 12 months time+
92         2005 3 1 0 0 0 instant <timestamp> = ] unit-test
93 [ t ] [ 2004 2 29 0 0 0 instant <timestamp> -12 months time+
94         2003 3 1 0 0 0 instant <timestamp> = ] unit-test
95
96 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 0 years time+
97         2006 1 1 0 0 0 instant <timestamp> = ] unit-test
98 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> 1 years time+
99         2007 1 1 0 0 0 instant <timestamp> = ] unit-test
100 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> -1 years time+
101         2005 1 1 0 0 0 instant <timestamp> = ] unit-test
102 [ t ] [ 2006 1 1 0 0 0 instant <timestamp> -100 years time+
103         1906 1 1 0 0 0 instant <timestamp> = ] unit-test
104 ! [ t ] [ 2004 2 29 0 0 0 instant <timestamp> -1 years time+
105 !         2003 2 28 0 0 0 instant <timestamp> = ] unit-test
106
107 [ 5 ] [ 2006 7 14 0 0 0 instant <timestamp> day-of-week ] unit-test
108
109 [ t ] [ 2006 7 14 [ julian-day-number julian-day-number>date 0 0 0 instant <timestamp> ] 3keep 0 0 0 instant <timestamp> = ] unit-test
110
111 [ 1 ] [ 2006 1 1 0 0 0 instant <timestamp> day-of-year ] unit-test
112 [ 60 ] [ 2004 2 29 0 0 0 instant <timestamp> day-of-year ] unit-test
113 [ 61 ] [ 2004 3 1 0 0 0 instant <timestamp> day-of-year ] unit-test
114 [ 366 ] [ 2004 12 31 0 0 0 instant <timestamp> day-of-year ] unit-test
115 [ 365 ] [ 2003 12 31 0 0 0 instant <timestamp> day-of-year ] unit-test
116 [ 60 ] [ 2003 3 1 0 0 0 instant <timestamp> day-of-year ] unit-test
117
118 [ t ] [ 2004 12 31 0 0 0 instant <timestamp> dup = ] unit-test
119 [ t ] [ 2004 1 1 0 0 0 instant <timestamp> 10 seconds 5 years time+ time+
120         2009 1 1 0 0 10 instant <timestamp> = ] unit-test
121 [ t ] [ 2004 1 1 0 0 0 instant <timestamp> -10 seconds -5 years time+ time+
122         1998 12 31 23 59 50 instant <timestamp> = ] unit-test
123
124 [ t ] [ 2004 1 1 23 0 0 12 hours <timestamp> >gmt
125         2004 1 1 11 0 0 instant <timestamp> = ] unit-test
126 [ t ] [ 2004 1 1 5 0 0 -11 hours <timestamp> >gmt
127         2004 1 1 16 0 0 instant <timestamp> = ] unit-test
128 [ t ] [ 2004 1 1 23 0 0 9+1/2 hours <timestamp> >gmt
129         2004 1 1 13 30 0 instant <timestamp> = ] unit-test
130
131 [ +eq+ ] [ 2004 1 1 13 30 0 instant <timestamp>
132         2004 1 1 12 30 0 -1 hours <timestamp> <=> ] unit-test
133
134 [ +gt+ ] [ 2004 1 1 13 30 0 instant <timestamp>
135         2004 1 1 12 30 0 instant <timestamp> <=> ] unit-test
136
137 [ +lt+ ] [ 2004 1 1 12 30 0 instant <timestamp>
138         2004 1 1 13 30 0 instant <timestamp> <=> ] unit-test
139
140 [ +gt+ ] [ 2005 1 1 12 30 0 instant <timestamp>
141         2004 1 1 13 30 0 instant <timestamp> <=> ] unit-test
142
143 [ t ] [ now timestamp>micros system-micros - 1000000 < ] unit-test
144 [ t ] [ 0 micros>timestamp unix-1970 = ] unit-test
145 [ t ] [ 123456789000000 [ micros>timestamp timestamp>micros ] keep = ] unit-test
146 [ t ] [ 123456789123456000 [ micros>timestamp timestamp>micros ] keep = ] unit-test
147
148 : checktime+ ( duration -- ? ) now dup clone [ rot time+ drop ] keep = ;
149
150 [ t ] [ 5 seconds checktime+ ] unit-test
151
152 [ t ] [ 5 minutes checktime+ ] unit-test
153
154 [ t ] [ 5 hours checktime+ ] unit-test
155
156 [ t ] [ 5 days checktime+ ] unit-test
157
158 [ t ] [ 5 weeks checktime+ ] unit-test
159
160 [ t ] [ 5 months checktime+ ] unit-test
161
162 [ t ] [ 5 years checktime+ ] unit-test
163
164 [ t ] [ now 50 milliseconds sleep now before? ] unit-test
165 [ t ] [ now 50 milliseconds sleep now swap after? ] unit-test
166 [ t ] [ now 50 milliseconds sleep now 50 milliseconds sleep now swapd between? ] unit-test
167
168 [ 4 12 ] [ 2009 easter [ month>> ] [ day>> ] bi ] unit-test
169 [ 4 2 ] [ 1961 easter [ month>> ] [ day>> ] bi ] unit-test
170
171 [ f ] [ now dup midnight eq? ] unit-test
172 [ f ] [ now dup easter eq? ] unit-test
173 [ f ] [ now dup beginning-of-year eq? ] unit-test
174
175 [ t ] [ 1325376000 unix-time>timestamp 2012 <year-gmt> = ] unit-test
176 [ t ] [ 1356998399 unix-time>timestamp 2013 <year-gmt> 1 seconds time- = ] unit-test
177
178 [ t ] [ 1500000000 random [ unix-time>timestamp timestamp>unix-time ] keep = ] unit-test
179
180 [ t ] [
181     2009 1 29 <date> 1 months time+
182     2009 3 1 <date> =
183 ] unit-test
184
185 [ t ] [
186     2008 1 29 <date> 1 months time+
187     2008 2 29 <date> =
188 ] unit-test