test_doc  0.1
 全部  文件 函数 变量 宏定义 
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 
30  Datetime d;
31  BOOST_CHECK(d == Null<Datetime>());
32  BOOST_CHECK(Null<Datetime>() == d);
33  d = Datetime(201208062359);
34  BOOST_CHECK(d < Null<Datetime>());
35 
37  d = Datetime(Null<unsigned long long>());
38  BOOST_CHECK(d == Null<Datetime>());
39 
41  d = Datetime(200101010110);
42  d = d.date();
43  BOOST_CHECK(Datetime(200101010000) == d);
44 
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 }
97 
99 BOOST_AUTO_TEST_CASE( test_Datetime_related_operator ) {
101  BOOST_CHECK(Datetime(200101010000) < Null<Datetime>());
102  BOOST_CHECK(Datetime(200101010000) < Datetime::maxDatetime());
103  BOOST_CHECK(Datetime::minDatetime() < Datetime(200101010000));
104  BOOST_CHECK(Datetime(200101010000) < Datetime(200101020000));
105 
106 }
107