3 #include <boost/test/unit_test.hpp>
5 #include <openssl/err.h>
8 BOOST_AUTO_TEST_SUITE( TestTime )
10 BOOST_AUTO_TEST_CASE( testParseDate ) {
11 auto r = parseDate( "2012-01-01" );
12 BOOST_CHECK( r.first );
13 BOOST_CHECK( r.second == 1325376000 );
15 r = parseDate( "1970-01-01" );
16 BOOST_CHECK( r.first );
17 BOOST_CHECK( r.second == 0 );
19 BOOST_CHECK( !( parseDate( "" ) ).first );
20 BOOST_CHECK( !( parseDate( "hallo" ) ).first );
21 BOOST_CHECK( !( parseDate( "aaaa-aa-aa" ) ).first );
22 BOOST_CHECK( !( parseDate( "32-12-12" ) ).first );
23 BOOST_CHECK( !( parseDate( "2000-12-01z" ) ).first );
24 BOOST_CHECK( !( parseDate( "2000-13-01" ) ).first );
25 BOOST_CHECK( !( parseDate( "2000-00-01" ) ).first );
26 BOOST_CHECK( !( parseDate( "2000-02-30" ) ).first );
27 BOOST_CHECK( ( parseDate( "2000-02-29" ) ).first );
28 BOOST_CHECK( ( parseDate( "2000-01-31" ) ).first );
29 BOOST_CHECK( !( parseDate( "2000-01-32" ) ).first );
30 BOOST_CHECK( !( parseDate( "2001-02-29" ) ).first );
31 BOOST_CHECK( !( parseDate( "2000-02-0" ) ).first );
32 BOOST_CHECK( !( parseDate( "2000-02-99" ) ).first );
35 std::time_t extract( std::pair<bool, std::time_t> pair, std::string ex ) {
36 BOOST_REQUIRE( pair.first );
41 #define CHECK_EQ(a, inter, b) BOOST_CHECK_EQUAL( extract(parseMonthInterval(extract(parseDate(a), "a"), inter),"b"), extract(parseDate(b),"c"))
43 #define CHECK_EQ_Y(a, inter, b) BOOST_CHECK_EQUAL( extract(parseYearInterval(extract(parseDate(a), "a"), inter),"b"), extract(parseDate(b),"c"))
45 BOOST_AUTO_TEST_CASE( testAddInverval ) {
46 CHECK_EQ( "2000-01-01", "1m", "2000-02-01" );
47 CHECK_EQ( "2000-02-29", "12m", "2001-02-28" );
48 CHECK_EQ_Y( "2000-02-29", "1y", "2001-02-28" );
49 CHECK_EQ( "1999-03-01", "12m", "2000-03-01" );
50 CHECK_EQ_Y( "1999-03-01", "1y", "2000-03-01" );
51 CHECK_EQ( "2000-01-29", "1m", "2000-02-29" );
52 CHECK_EQ( "2001-01-29", "1m", "2001-02-28" );
53 CHECK_EQ( "2100-01-29", "1m", "2100-02-28" );
54 CHECK_EQ( "2400-01-29", "1m", "2400-02-29" );
55 CHECK_EQ( "2099-11-30", "3m", "2100-02-28" );
56 CHECK_EQ( "2399-07-29", "7m", "2400-02-29" );
58 BOOST_AUTO_TEST_CASE( testInvalidInverval ) {
60 BOOST_CHECK( !( parseMonthInterval( base, "1" ).first ) );
61 BOOST_CHECK( !( parseMonthInterval( base, "-m" ).first ) );
62 BOOST_CHECK( !( parseMonthInterval( base, "0m" ).first ) );
63 BOOST_CHECK( !( parseMonthInterval( base, "-1m" ).first ) );
64 BOOST_CHECK( !( parseMonthInterval( base, "1g" ).first ) );
65 BOOST_CHECK( !( parseMonthInterval( base, "12ym" ).first ) );
66 BOOST_CHECK( !( parseMonthInterval( base, "12my" ).first ) );
67 BOOST_CHECK( !( parseMonthInterval( base, "-2y2m" ).first ) );
68 BOOST_CHECK( !( parseMonthInterval( base, "--2m" ).first ) );
69 BOOST_CHECK( !( parseMonthInterval( base, "25m" ).first ) ); // too big
71 BOOST_CHECK( !( parseYearInterval( base, "12k" ).first ) );
72 BOOST_CHECK( !( parseYearInterval( base, "12my" ).first ) );
73 BOOST_CHECK( !( parseYearInterval( base, "-2m2y" ).first ) );
74 BOOST_CHECK( !( parseYearInterval( base, "--2y" ).first ) );
75 BOOST_CHECK( !( parseYearInterval( base, "3y" ).first ) ); // too big
79 BOOST_AUTO_TEST_SUITE_END()