libmoost
/home/mhx/git/github/libmoost/test/posix_time/timestamp.cpp
Go to the documentation of this file.
00001 /* vim:set ts=3 sw=3 sts=3 et: */
00028 #include <boost/test/unit_test.hpp>
00029 
00030 #include "../../include/moost/posix_time/timestamp.hpp"
00031 
00032 BOOST_AUTO_TEST_SUITE(moost_posix_time_timestamp)
00033 
00034 namespace
00035 {
00036 
00037 const time_t NOW = 1335378426;
00038 const boost::posix_time::ptime PNOW = boost::posix_time::from_time_t(NOW);
00039 
00040 class test_timebase
00041 {
00042 public:
00043    static boost::posix_time::ptime now()
00044    {
00045       return boost::posix_time::from_time_t(NOW);
00046    }
00047 
00048    static boost::posix_time::ptime base()
00049    {
00050       return moost::posix_time::universal_timebase::base();
00051    }
00052 };
00053 
00054 typedef moost::posix_time::basic_timestamp<test_timebase> test_timestamp;
00055 
00056 }
00057 
00058 BOOST_AUTO_TEST_CASE(timestamp)
00059 {
00060    BOOST_CHECK_EQUAL(test_timestamp(100).as_time_t(), 100);
00061    BOOST_CHECK_EQUAL(test_timestamp("100").as_time_t(), 100);
00062    BOOST_CHECK_EQUAL(test_timestamp("0h").as_time_t(), NOW);
00063    BOOST_CHECK_EQUAL(test_timestamp("+2h").as_time_t(), NOW + 7200);
00064 
00065    BOOST_CHECK_EQUAL(test_timestamp("20120425T182706").as_time_t(), NOW);
00066    BOOST_CHECK_EQUAL(test_timestamp("2012-04-25 18:27:06").as_time_t(), NOW);
00067    BOOST_CHECK_EQUAL(test_timestamp("2012-Apr-25 18:27:06").as_time_t(), NOW);
00068 
00069    // TODO more tests
00070 }
00071 
00072 BOOST_AUTO_TEST_CASE(timestamp_operators)
00073 {
00074    BOOST_CHECK(test_timestamp("+24h") == test_timestamp("1d"));
00075    BOOST_CHECK(test_timestamp("+23h") != test_timestamp("1d"));
00076    BOOST_CHECK(test_timestamp("+23h") < test_timestamp("1d"));
00077    BOOST_CHECK(test_timestamp("+25h") > test_timestamp("1d"));
00078    BOOST_CHECK(test_timestamp("+24h") <= test_timestamp("1d"));
00079    BOOST_CHECK(test_timestamp("+24h") >= test_timestamp("1d"));
00080 
00081    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:06") == NOW);
00082    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:07") != NOW);
00083    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:06") <= NOW);
00084    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:06") >= NOW);
00085    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:05") < NOW);
00086    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:07") > NOW);
00087    BOOST_CHECK(NOW == test_timestamp("2012-Apr-25 18:27:06"));
00088    BOOST_CHECK(NOW != test_timestamp("2012-Apr-25 18:27:07"));
00089    BOOST_CHECK(NOW >= test_timestamp("2012-Apr-25 18:27:06"));
00090    BOOST_CHECK(NOW <= test_timestamp("2012-Apr-25 18:27:06"));
00091    BOOST_CHECK(NOW > test_timestamp("2012-Apr-25 18:27:05"));
00092    BOOST_CHECK(NOW < test_timestamp("2012-Apr-25 18:27:07"));
00093 
00094    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:06") == PNOW);
00095    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:07") != PNOW);
00096    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:06") <= PNOW);
00097    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:06") >= PNOW);
00098    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:05") < PNOW);
00099    BOOST_CHECK(test_timestamp("2012-Apr-25 18:27:07") > PNOW);
00100    BOOST_CHECK(PNOW == test_timestamp("2012-Apr-25 18:27:06"));
00101    BOOST_CHECK(PNOW != test_timestamp("2012-Apr-25 18:27:07"));
00102    BOOST_CHECK(PNOW >= test_timestamp("2012-Apr-25 18:27:06"));
00103    BOOST_CHECK(PNOW <= test_timestamp("2012-Apr-25 18:27:06"));
00104    BOOST_CHECK(PNOW > test_timestamp("2012-Apr-25 18:27:05"));
00105    BOOST_CHECK(PNOW < test_timestamp("2012-Apr-25 18:27:07"));
00106 }
00107 
00108 BOOST_AUTO_TEST_SUITE_END()