]> WPIA git - cassiopeia.git/blob - test/src/time.cpp
fix: misspelled test name
[cassiopeia.git] / test / src / time.cpp
1 #include "util.h"
2
3 #include <boost/test/unit_test.hpp>
4 #include <iostream>
5 #include <openssl/err.h>
6
7
8 BOOST_AUTO_TEST_SUITE( TestTime )
9
10 BOOST_AUTO_TEST_CASE( testParseDate ) {
11     auto r = parseDate( "2012-01-01" );
12     BOOST_CHECK( r.first );
13     BOOST_CHECK( r.second == 1325376000 );
14
15     r = parseDate( "1970-01-01" );
16     BOOST_CHECK( r.first );
17     BOOST_CHECK( r.second == 0 );
18
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 );
33 }
34
35 std::time_t extract( std::pair<bool, std::time_t> pair, std::string ex ) {
36     BOOST_REQUIRE( pair.first );
37     ( void ) ex;
38     return pair.second;
39 }
40
41 #define CHECK_EQ(a, inter, b) BOOST_CHECK_EQUAL( extract(parseMonthInterval(extract(parseDate(a), "a"), inter),"b"), extract(parseDate(b),"c"))
42
43 #define CHECK_EQ_Y(a, inter, b) BOOST_CHECK_EQUAL( extract(parseYearInterval(extract(parseDate(a), "a"), inter),"b"), extract(parseDate(b),"c"))
44
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" );
57 }
58 BOOST_AUTO_TEST_CASE( testInvalidInverval ) {
59     std::time_t base = 0;
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
70
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
76
77 }
78
79 BOOST_AUTO_TEST_SUITE_END()