test_doc
test_datetime.cpp
浏览该文件的文档.
1 /*
2  * test_datetime.cpp
3  *
4  * Created on: 2012-8-25
5  * Author: fasiondog
6  */
7 
8 #ifdef TEST_ALL_IN_ONE
9  #include <boost/test/unit_test.hpp>
10 #else
11  #define BOOST_TEST_MODULE test_hikyuu_datetime
12  #include <boost/test/unit_test.hpp>
13 #endif
14 
15 #include <hikyuu/datetime/Datetime.h>
16 #include <hikyuu/utilities/Null.h>
17 
18 using namespace hku;
19 
27 BOOST_AUTO_TEST_CASE( test_Datetime ) {
28  Datetime null_datetime = Null<Datetime>();
29 
31  Datetime d;
32  BOOST_CHECK(d == Null<Datetime>());
33  BOOST_CHECK(Null<Datetime>() == d);
34  d = Datetime(201208062359);
35  BOOST_CHECK(d < Null<Datetime>());
36 
38  d = Datetime(Null<unsigned long long>());
39  BOOST_CHECK(d == Null<Datetime>());
40 
42  d = Datetime(200101010110);
43  d = d.date();
44  BOOST_CHECK(Datetime(200101010000) == d);
45 
47  BOOST_CHECK_THROW(Datetime(99999,1,1), std::out_of_range);
48  BOOST_CHECK_THROW(Datetime(000001010000L), std::out_of_range);
49 
51  BOOST_CHECK_THROW(Datetime(2010,13,1), std::out_of_range);
52  BOOST_CHECK_THROW(Datetime(2010,0,1), std::out_of_range);
53 
54  BOOST_CHECK_THROW(Datetime(201013010000L), std::out_of_range);
55  BOOST_CHECK_THROW(Datetime(201000010000L), std::out_of_range);
56 
58  BOOST_CHECK_THROW(Datetime(2010,1,0), std::out_of_range);
59  BOOST_CHECK_THROW(Datetime(2010,1,32), std::out_of_range);
60 
61  BOOST_CHECK_THROW(Datetime(201001000000L), std::out_of_range);
62  BOOST_CHECK_THROW(Datetime(201001320000L), std::out_of_range);
63 
65  BOOST_CHECK_THROW(Datetime(201001012400L), std::out_of_range);
66  BOOST_CHECK_THROW(Datetime(201001012500L), std::out_of_range);
67 
69  BOOST_CHECK_THROW(Datetime(201001010060L), std::out_of_range);
70  BOOST_CHECK_THROW(Datetime(201001010061L), std::out_of_range);
71 
73  d = Datetime(201208062359);
74  BOOST_CHECK(2012 == d.year());
75  BOOST_CHECK(8 == d.month());
76  BOOST_CHECK(6 == d.day());
77  BOOST_CHECK(23 == d.hour());
78  BOOST_CHECK(59 == d.minute());
79 
81  unsigned long long x = d.number();
82  BOOST_CHECK(x == 201208062359);
83 
84  long long y = x;
85  Datetime m(y);
86  BOOST_CHECK(m == d);
87 
89  x = Null<unsigned long long>();
90  d = Null<Datetime>();
91  BOOST_CHECK(x == d.number());
92 
94  d = Datetime("2001-Jan-01 06:30:00");
95  BOOST_CHECK("2001-Jan-01 06:30:00" == d.toString());
96 
98  BOOST_CHECK(Datetime(201801010000L).dayOfWeek() == 1);
99  BOOST_CHECK(Datetime(201801060000L).dayOfWeek() == 6);
100  BOOST_CHECK(Datetime(201801070000L).dayOfWeek() == 0);
101 
103  BOOST_CHECK(Datetime(201801010000L).dayOfYear() == 1);
104  BOOST_CHECK(Datetime(201812310000L).dayOfYear() == 365);
105 
107  BOOST_CHECK(null_datetime.dateOfWeek(-1) == null_datetime);
108  BOOST_CHECK(null_datetime.dateOfWeek(0) == null_datetime);
109  BOOST_CHECK(null_datetime.dateOfWeek(4) == null_datetime);
110  BOOST_CHECK(null_datetime.dateOfWeek(6) == null_datetime);
111  BOOST_CHECK(null_datetime.dateOfWeek(7) == null_datetime);
112  BOOST_CHECK(Datetime(201901010000).dateOfWeek(-1) == Datetime(201812300000));
113  BOOST_CHECK(Datetime(201901010000).dateOfWeek(0) == Datetime(201812300000));
114  BOOST_CHECK(Datetime(201901010000).dateOfWeek(1) == Datetime(201812310000));
115  BOOST_CHECK(Datetime(201901010000).dateOfWeek(2) == Datetime(201901010000));
116  BOOST_CHECK(Datetime(201901010000).dateOfWeek(3) == Datetime(201901020000));
117  BOOST_CHECK(Datetime(201901010000).dateOfWeek(4) == Datetime(201901030000));
118  BOOST_CHECK(Datetime(201901010000).dateOfWeek(5) == Datetime(201901040000));
119  BOOST_CHECK(Datetime(201901010000).dateOfWeek(6) == Datetime(201901050000));
120  BOOST_CHECK(Datetime(201901010000).dateOfWeek(7) == Datetime(201901050000));
121 
123  BOOST_CHECK(null_datetime.startOfWeek() == null_datetime);
124  BOOST_CHECK(Datetime::min().startOfWeek() == Datetime::min());
125  BOOST_CHECK(Datetime::max().startOfWeek() == Datetime(9999, 12, 27));
126  BOOST_CHECK(Datetime(201812310000).startOfWeek() == Datetime(201812310000));
127  BOOST_CHECK(Datetime(201901050000).startOfWeek() == Datetime(201812310000));
128  BOOST_CHECK(Datetime(201901060000).startOfWeek() == Datetime(201812310000));
129  BOOST_CHECK(Datetime(201901090000).startOfWeek() == Datetime(201901070000));
130 
132  BOOST_CHECK(null_datetime.endOfWeek() == null_datetime);
133  BOOST_CHECK(Datetime::min().endOfWeek() == Datetime(1400, 1, 5));
134  BOOST_CHECK(Datetime::max().endOfWeek() == Datetime::max());
135  BOOST_CHECK(Datetime(201812310000).endOfWeek() == Datetime(201901060000));
136  BOOST_CHECK(Datetime(201901050000).endOfWeek() == Datetime(201901060000));
137  BOOST_CHECK(Datetime(201901060000).endOfWeek() == Datetime(201901060000));
138  BOOST_CHECK(Datetime(201901090000).endOfWeek() == Datetime(201901130000));
139 
141  BOOST_CHECK(null_datetime.startOfMonth() == null_datetime);
142  BOOST_CHECK(Datetime::min().startOfMonth() == Datetime::min());
143  BOOST_CHECK(Datetime::max().startOfMonth() == Datetime(9999, 12, 1));
144  BOOST_CHECK(Datetime(201901050000).startOfMonth() == Datetime(201901010000));
145  BOOST_CHECK(Datetime(201902050000).startOfMonth() == Datetime(201902010000));
146  BOOST_CHECK(Datetime(201902010000).startOfMonth() == Datetime(201902010000));
147  BOOST_CHECK(Datetime(201903030000).startOfMonth() == Datetime(201903010000));
148  BOOST_CHECK(Datetime(201904030000).startOfMonth() == Datetime(201904010000));
149  BOOST_CHECK(Datetime(201912030000).startOfMonth() == Datetime(201912010000));
150 
152  BOOST_CHECK(null_datetime.endOfMonth() == null_datetime);
153  BOOST_CHECK(Datetime::max().endOfMonth() == Datetime::max());
154  BOOST_CHECK(Datetime::min().endOfMonth() == Datetime(1400, 1, 31));
155  BOOST_CHECK(Datetime(201801010000L).endOfMonth() == Datetime(201801310000L));
156  BOOST_CHECK(Datetime(201802010000L).endOfMonth() == Datetime(201802280000L));
157  BOOST_CHECK(Datetime(201803010000L).endOfMonth() == Datetime(201803310000L));
158  BOOST_CHECK(Datetime(201804010000L).endOfMonth() == Datetime(201804300000L));
159  BOOST_CHECK(Datetime(201805010000L).endOfMonth() == Datetime(201805310000L));
160  BOOST_CHECK(Datetime(201806010000L).endOfMonth() == Datetime(201806300000L));
161  BOOST_CHECK(Datetime(201807010000L).endOfMonth() == Datetime(201807310000L));
162  BOOST_CHECK(Datetime(201808010000L).endOfMonth() == Datetime(201808310000L));
163  BOOST_CHECK(Datetime(201809010000L).endOfMonth() == Datetime(201809300000L));
164  BOOST_CHECK(Datetime(201810010000L).endOfMonth() == Datetime(201810310000L));
165  BOOST_CHECK(Datetime(201811010000L).endOfMonth() == Datetime(201811300000L));
166  BOOST_CHECK(Datetime(201812010000L).endOfMonth() == Datetime(201812310000L));
167 
169  BOOST_CHECK(null_datetime.startOfQuarter() == null_datetime);
170  BOOST_CHECK(Datetime::min().startOfQuarter() == Datetime::min());
171  BOOST_CHECK(Datetime::max().startOfQuarter() == Datetime(9999, 10, 1));
172  BOOST_CHECK(Datetime(201902050000).startOfQuarter() == Datetime(201901010000));
173  BOOST_CHECK(Datetime(201901010000).startOfQuarter() == Datetime(201901010000));
174  BOOST_CHECK(Datetime(201903310000).startOfQuarter() == Datetime(201901010000));
175  BOOST_CHECK(Datetime(201904010000).startOfQuarter() == Datetime(201904010000));
176  BOOST_CHECK(Datetime(201905010000).startOfQuarter() == Datetime(201904010000));
177  BOOST_CHECK(Datetime(201906300000).startOfQuarter() == Datetime(201904010000));
178  BOOST_CHECK(Datetime(201907010000).startOfQuarter() == Datetime(201907010000));
179  BOOST_CHECK(Datetime(201907060000).startOfQuarter() == Datetime(201907010000));
180  BOOST_CHECK(Datetime(201909300000).startOfQuarter() == Datetime(201907010000));
181  BOOST_CHECK(Datetime(201910010000).startOfQuarter() == Datetime(201910010000));
182  BOOST_CHECK(Datetime(201911010000).startOfQuarter() == Datetime(201910010000));
183  BOOST_CHECK(Datetime(201912310000).startOfQuarter() == Datetime(201910010000));
184 
186  BOOST_CHECK(null_datetime.endOfQuarter() == null_datetime);
187  BOOST_CHECK(Datetime::min().endOfQuarter() == Datetime(1400, 3, 31));
188  BOOST_CHECK(Datetime::max().endOfQuarter() == Datetime::max());
189  BOOST_CHECK(Datetime(201902050000).endOfQuarter() == Datetime(201903310000));
190  BOOST_CHECK(Datetime(201901010000).endOfQuarter() == Datetime(201903310000));
191  BOOST_CHECK(Datetime(201903310000).endOfQuarter() == Datetime(201903310000));
192  BOOST_CHECK(Datetime(201904010000).endOfQuarter() == Datetime(201906300000));
193  BOOST_CHECK(Datetime(201905010000).endOfQuarter() == Datetime(201906300000));
194  BOOST_CHECK(Datetime(201906300000).endOfQuarter() == Datetime(201906300000));
195  BOOST_CHECK(Datetime(201907010000).endOfQuarter() == Datetime(201909300000));
196  BOOST_CHECK(Datetime(201907060000).endOfQuarter() == Datetime(201909300000));
197  BOOST_CHECK(Datetime(201909300000).endOfQuarter() == Datetime(201909300000));
198  BOOST_CHECK(Datetime(201910010000).endOfQuarter() == Datetime(201912310000));
199  BOOST_CHECK(Datetime(201911010000).endOfQuarter() == Datetime(201912310000));
200  BOOST_CHECK(Datetime(201912310000).endOfQuarter() == Datetime(201912310000));
201 
203  BOOST_CHECK(null_datetime.startOfHalfyear() == null_datetime);
204  BOOST_CHECK(Datetime::min().startOfHalfyear() == Datetime::min());
205  BOOST_CHECK(Datetime::max().startOfHalfyear() == Datetime(9999, 7, 1));
206  BOOST_CHECK(Datetime(201812310000).startOfHalfyear() == Datetime(201807010000));
207  BOOST_CHECK(Datetime(201901010000).startOfHalfyear() == Datetime(201901010000));
208  BOOST_CHECK(Datetime(201901020000).startOfHalfyear() == Datetime(201901010000));
209  BOOST_CHECK(Datetime(201906050000).startOfHalfyear() == Datetime(201901010000));
210  BOOST_CHECK(Datetime(201906300000).startOfHalfyear() == Datetime(201901010000));
211  BOOST_CHECK(Datetime(201907010000).startOfHalfyear() == Datetime(201907010000));
212  BOOST_CHECK(Datetime(201907100000).startOfHalfyear() == Datetime(201907010000));
213  BOOST_CHECK(Datetime(201912010000).startOfHalfyear() == Datetime(201907010000));
214  BOOST_CHECK(Datetime(201912310000).startOfHalfyear() == Datetime(201907010000));
215 
217  BOOST_CHECK(null_datetime.endOfHalfyear() == null_datetime);
218  BOOST_CHECK(Datetime::min().endOfHalfyear() == Datetime(1400, 6, 30));
219  BOOST_CHECK(Datetime::max().endOfHalfyear() == Datetime::max());
220  BOOST_CHECK(Datetime(201812310000).endOfHalfyear() == Datetime(201812310000));
221  BOOST_CHECK(Datetime(201901010000).endOfHalfyear() == Datetime(201906300000));
222  BOOST_CHECK(Datetime(201901020000).endOfHalfyear() == Datetime(201906300000));
223  BOOST_CHECK(Datetime(201906050000).endOfHalfyear() == Datetime(201906300000));
224  BOOST_CHECK(Datetime(201906300000).endOfHalfyear() == Datetime(201906300000));
225  BOOST_CHECK(Datetime(201907010000).endOfHalfyear() == Datetime(201912310000));
226  BOOST_CHECK(Datetime(201907100000).endOfHalfyear() == Datetime(201912310000));
227  BOOST_CHECK(Datetime(201912010000).endOfHalfyear() == Datetime(201912310000));
228  BOOST_CHECK(Datetime(201912310000).endOfHalfyear() == Datetime(201912310000));
229 
231  BOOST_CHECK(null_datetime.startOfYear() == null_datetime);
232  BOOST_CHECK(Datetime::min().startOfYear() == Datetime::min());
233  BOOST_CHECK(Datetime::max().startOfYear() == Datetime(9999, 1, 1));
234  BOOST_CHECK(Datetime(201901050000).startOfYear() == Datetime(201901010000));
235  BOOST_CHECK(Datetime(201911050000).startOfYear() == Datetime(201901010000));
236 
238  BOOST_CHECK(null_datetime.endOfYear() == null_datetime);
239  BOOST_CHECK(Datetime::min().endOfYear() == Datetime(1400, 12, 31));
240  BOOST_CHECK(Datetime::max().endOfYear() == Datetime::max());
241  BOOST_CHECK(Datetime(201902050000).endOfYear() == Datetime(201912310000));
242  BOOST_CHECK(Datetime(201912310000).endOfYear() == Datetime(201912310000));
243 
245  BOOST_CHECK(null_datetime.nextDay() == null_datetime);
246  BOOST_CHECK(Datetime::max().nextDay() == Datetime::max());
247  BOOST_CHECK(Datetime(201802060000L).nextDay() == Datetime(201802070000L));
248  BOOST_CHECK(Datetime(201802280000L).nextDay() == Datetime(201803010000L));
249  BOOST_CHECK(Datetime(201602280000L).nextDay() == Datetime(201602290000L));
250 
252  BOOST_CHECK(null_datetime.nextWeek() == null_datetime);
253  BOOST_CHECK(Datetime::max().nextWeek() == Datetime::max());
254  BOOST_CHECK(Datetime(201812300000).nextWeek() == Datetime(201812310000));
255  BOOST_CHECK(Datetime(201812310000).nextWeek() == Datetime(201901070000));
256  BOOST_CHECK(Datetime(201901010000).nextWeek() == Datetime(201901070000));
257  BOOST_CHECK(Datetime(201901020000).nextWeek() == Datetime(201901070000));
258  BOOST_CHECK(Datetime(201901030000).nextWeek() == Datetime(201901070000));
259  BOOST_CHECK(Datetime(201901040000).nextWeek() == Datetime(201901070000));
260  BOOST_CHECK(Datetime(201901050000).nextWeek() == Datetime(201901070000));
261  BOOST_CHECK(Datetime(201901060000).nextWeek() == Datetime(201901070000));
262  BOOST_CHECK(Datetime(201901070000).nextWeek() == Datetime(201901140000));
263 
265  BOOST_CHECK(null_datetime.nextMonth() == null_datetime);
266  BOOST_CHECK(Datetime::max().nextMonth() == Datetime::max());
267  BOOST_CHECK(Datetime(201812310000).nextMonth() == Datetime(201901010000));
268  BOOST_CHECK(Datetime(201901010000).nextMonth() == Datetime(201902010000));
269  BOOST_CHECK(Datetime(201901310000).nextMonth() == Datetime(201902010000));
270 
272  BOOST_CHECK(null_datetime.nextQuarter() == null_datetime);
273  BOOST_CHECK(Datetime::max().nextQuarter() == Datetime::max());
274  BOOST_CHECK(Datetime(201901010000).nextQuarter() == Datetime(201904010000));
275  BOOST_CHECK(Datetime(201902010000).nextQuarter() == Datetime(201904010000));
276  BOOST_CHECK(Datetime(201903310000).nextQuarter() == Datetime(201904010000));
277  BOOST_CHECK(Datetime(201904010000).nextQuarter() == Datetime(201907010000));
278  BOOST_CHECK(Datetime(201905010000).nextQuarter() == Datetime(201907010000));
279  BOOST_CHECK(Datetime(201906300000).nextQuarter() == Datetime(201907010000));
280  BOOST_CHECK(Datetime(201907010000).nextQuarter() == Datetime(201910010000));
281  BOOST_CHECK(Datetime(201907020000).nextQuarter() == Datetime(201910010000));
282  BOOST_CHECK(Datetime(201908010000).nextQuarter() == Datetime(201910010000));
283  BOOST_CHECK(Datetime(201909300000).nextQuarter() == Datetime(201910010000));
284  BOOST_CHECK(Datetime(201910010000).nextQuarter() == Datetime(202001010000));
285  BOOST_CHECK(Datetime(201911010000).nextQuarter() == Datetime(202001010000));
286  BOOST_CHECK(Datetime(201912310000).nextQuarter() == Datetime(202001010000));
287 
289  BOOST_CHECK(null_datetime.nextHalfyear() == null_datetime);
290  BOOST_CHECK(Datetime::max().nextHalfyear() == Datetime::max());
291  BOOST_CHECK(Datetime(201812310000).nextHalfyear() == Datetime(201901010000));
292  BOOST_CHECK(Datetime(201901010000).nextHalfyear() == Datetime(201907010000));
293  BOOST_CHECK(Datetime(201905050000).nextHalfyear() == Datetime(201907010000));
294  BOOST_CHECK(Datetime(201906300000).nextHalfyear() == Datetime(201907010000));
295  BOOST_CHECK(Datetime(201907010000).nextHalfyear() == Datetime(202001010000));
296  BOOST_CHECK(Datetime(201910110000).nextHalfyear() == Datetime(202001010000));
297  BOOST_CHECK(Datetime(201912310000).nextHalfyear() == Datetime(202001010000));
298 
300  BOOST_CHECK(null_datetime.nextYear() == null_datetime);
301  BOOST_CHECK(Datetime::max().nextYear() == Datetime::max());
302  BOOST_CHECK(Datetime(201812310000).nextYear() == Datetime(201901010000));
303  BOOST_CHECK(Datetime(201901010000).nextYear() == Datetime(202001010000));
304  BOOST_CHECK(Datetime(201901020000).nextYear() == Datetime(202001010000));
305  BOOST_CHECK(Datetime(201907310000).nextYear() == Datetime(202001010000));
306  BOOST_CHECK(Datetime(201912310000).nextYear() == Datetime(202001010000));
307 
309  BOOST_CHECK(null_datetime.preDay() == null_datetime);
310  BOOST_CHECK(Datetime::min().preDay() == Datetime::min());
311  BOOST_CHECK(Datetime(201812310000).preDay() == Datetime(201812300000));
312  BOOST_CHECK(Datetime(201901010000).preDay() == Datetime(201812310000));
313  BOOST_CHECK(Datetime(201901020000).preDay() == Datetime(201901010000));
314 
316  BOOST_CHECK(null_datetime.preWeek() == null_datetime);
317  BOOST_CHECK(Datetime::min().preWeek() == Datetime::min());
318  BOOST_CHECK(Datetime(201812310000).preWeek() == Datetime(201812240000));
319  BOOST_CHECK(Datetime(201901010000).preWeek() == Datetime(201812240000));
320  BOOST_CHECK(Datetime(201901020000).preWeek() == Datetime(201812240000));
321  BOOST_CHECK(Datetime(201901030000).preWeek() == Datetime(201812240000));
322  BOOST_CHECK(Datetime(201901040000).preWeek() == Datetime(201812240000));
323  BOOST_CHECK(Datetime(201901050000).preWeek() == Datetime(201812240000));
324  BOOST_CHECK(Datetime(201901060000).preWeek() == Datetime(201812240000));
325  BOOST_CHECK(Datetime(201901070000).preWeek() == Datetime(201812310000));
326 
328  BOOST_CHECK(null_datetime.preMonth() == null_datetime);
329  BOOST_CHECK(Datetime::min().preMonth() == Datetime::min());
330  BOOST_CHECK(Datetime(201602290000).preMonth() == Datetime(201601010000));
331  BOOST_CHECK(Datetime(201901010000).preMonth() == Datetime(201812010000));
332  BOOST_CHECK(Datetime(201901020000).preMonth() == Datetime(201812010000));
333  BOOST_CHECK(Datetime(201901310000).preMonth() == Datetime(201812010000));
334  BOOST_CHECK(Datetime(201902010000).preMonth() == Datetime(201901010000));
335  BOOST_CHECK(Datetime(201902280000).preMonth() == Datetime(201901010000));
336  BOOST_CHECK(Datetime(201903010000).preMonth() == Datetime(201902010000));
337  BOOST_CHECK(Datetime(201903310000).preMonth() == Datetime(201902010000));
338  BOOST_CHECK(Datetime(201904010000).preMonth() == Datetime(201903010000));
339  BOOST_CHECK(Datetime(201904300000).preMonth() == Datetime(201903010000));
340  BOOST_CHECK(Datetime(201905300000).preMonth() == Datetime(201904010000));
341  BOOST_CHECK(Datetime(201912310000).preMonth() == Datetime(201911010000));
342  BOOST_CHECK(Datetime(201912300000).preMonth() == Datetime(201911010000));
343 
345  BOOST_CHECK(null_datetime.preQuarter() == null_datetime);
346  BOOST_CHECK(Datetime::min().preQuarter() == Datetime::min());
347  BOOST_CHECK(Datetime(201901010000).preQuarter() == Datetime(201810010000));
348  BOOST_CHECK(Datetime(201903310000).preQuarter() == Datetime(201810010000));
349  BOOST_CHECK(Datetime(201904010000).preQuarter() == Datetime(201901010000));
350  BOOST_CHECK(Datetime(201906300000).preQuarter() == Datetime(201901010000));
351  BOOST_CHECK(Datetime(201907010000).preQuarter() == Datetime(201904010000));
352  BOOST_CHECK(Datetime(201909300000).preQuarter() == Datetime(201904010000));
353  BOOST_CHECK(Datetime(201910010000).preQuarter() == Datetime(201907010000));
354  BOOST_CHECK(Datetime(201912310000).preQuarter() == Datetime(201907010000));
355 
357  BOOST_CHECK(null_datetime.preHalfyear() == null_datetime);
358  BOOST_CHECK(Datetime::min().preHalfyear() == Datetime::min());
359  BOOST_CHECK(Datetime(201901010000).preHalfyear() == Datetime(201807010000));
360  BOOST_CHECK(Datetime(201906300000).preHalfyear() == Datetime(201807010000));
361  BOOST_CHECK(Datetime(201907010000).preHalfyear() == Datetime(201901010000));
362  BOOST_CHECK(Datetime(201912310000).preHalfyear() == Datetime(201901010000));
363  BOOST_CHECK(Datetime(202001010000).preHalfyear() == Datetime(201907010000));
364 
366  BOOST_CHECK(null_datetime.preYear() == null_datetime);
367  BOOST_CHECK(Datetime::min().preYear() == Datetime::min());
368  BOOST_CHECK(Datetime(201901010000).preYear() == Datetime(201801010000));
369  BOOST_CHECK(Datetime(201912310000).preYear() == Datetime(201801010000));
370  BOOST_CHECK(Datetime(201601010000).preYear() == Datetime(201501010000));
371  BOOST_CHECK(Datetime(201612310000).preYear() == Datetime(201501010000));
372 }
373 
375 BOOST_AUTO_TEST_CASE( test_Datetime_related_operator ) {
377  BOOST_CHECK(Datetime(200101010000) < Null<Datetime>());
378  BOOST_CHECK(Datetime(200101010000) < Datetime::max());
379  BOOST_CHECK(Datetime::min() < Datetime(200101010000));
380  BOOST_CHECK(Datetime(200101010000) < Datetime(200101020000));
381 
382 }
383 
BOOST_AUTO_TEST_CASE(test_Datetime)