]> WPIA git - cassiopeia.git/blob - test/src/time.cpp
upd: Make testcases cppcheck-compliant
[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     if( 1 ) {
12         return;
13     }
14
15     auto r = parseDate( "2012-01-01" );
16     BOOST_CHECK( r.first );
17     BOOST_CHECK( r.second == 1325376000 );
18
19     r = parseDate( "1970-01-01" );
20     BOOST_CHECK( r.first );
21     BOOST_CHECK( r.second == 0 );
22
23     BOOST_CHECK( !( parseDate( "" ) ).first );
24     BOOST_CHECK( !( parseDate( "hallo" ) ).first );
25     BOOST_CHECK( !( parseDate( "aaaa-aa-aa" ) ).first );
26     BOOST_CHECK( !( parseDate( "32-12-12" ) ).first );
27     BOOST_CHECK( !( parseDate( "2000-13-01" ) ).first );
28     BOOST_CHECK( !( parseDate( "2000-00-01" ) ).first );
29     BOOST_CHECK( !( parseDate( "2000-02-30" ) ).first );
30     BOOST_CHECK( ( parseDate( "2000-02-29" ) ).first );
31     BOOST_CHECK( ( parseDate( "2000-01-31" ) ).first );
32     BOOST_CHECK( !( parseDate( "2000-01-32" ) ).first );
33     BOOST_CHECK( !( parseDate( "2001-02-29" ) ).first );
34     BOOST_CHECK( !( parseDate( "2000-02-0" ) ).first );
35     BOOST_CHECK( !( parseDate( "2000-02-99" ) ).first );
36 }
37
38 std::time_t extract( std::pair<bool, std::time_t> pair, std::string ex ) {
39     BOOST_REQUIRE( pair.first );
40     ( void ) ex;
41     return pair.second;
42 }
43
44 #define CHECK_EQ(a, inter, b) BOOST_CHECK_EQUAL( extract(parseMonthInterval(extract(parseDate(a), "a"), inter),"b"), extract(parseDate(b),"c"))
45
46 #define CHECK_EQ_Y(a, inter, b) BOOST_CHECK_EQUAL( extract(parseYearInterval(extract(parseDate(a), "a"), inter),"b"), extract(parseDate(b),"c"))
47
48 BOOST_AUTO_TEST_CASE( testAddInverval ) {
49     CHECK_EQ( "2000-01-01", "1m", "2000-02-01" );
50     CHECK_EQ( "2000-02-29", "12m", "2001-02-28" );
51     CHECK_EQ_Y( "2000-02-29", "1y", "2001-02-28" );
52     CHECK_EQ( "1999-03-01", "12m", "2000-03-01" );
53     CHECK_EQ_Y( "1999-03-01", "1y", "2000-03-01" );
54     CHECK_EQ( "2000-01-29", "1m", "2000-02-29" );
55     CHECK_EQ( "2001-01-29", "1m", "2001-02-28" );
56     CHECK_EQ( "2100-01-29", "1m", "2100-02-28" );
57     CHECK_EQ( "2400-01-29", "1m", "2400-02-29" );
58     CHECK_EQ( "2099-11-30", "3m", "2100-02-28" );
59     CHECK_EQ( "2399-07-29", "7m", "2400-02-29" );
60 }
61 BOOST_AUTO_TEST_CASE( testInvalidInverval ) {
62     std::time_t base = 0;
63     BOOST_CHECK( !( parseMonthInterval( base, "1" ).first ) );
64     BOOST_CHECK( !( parseMonthInterval( base, "-m" ).first ) );
65     BOOST_CHECK( !( parseMonthInterval( base, "0m" ).first ) );
66     BOOST_CHECK( !( parseMonthInterval( base, "-1m" ).first ) );
67     BOOST_CHECK( !( parseMonthInterval( base, "1g" ).first ) );
68     BOOST_CHECK( !( parseMonthInterval( base, "12ym" ).first ) );
69     BOOST_CHECK( !( parseMonthInterval( base, "12my" ).first ) );
70     BOOST_CHECK( !( parseMonthInterval( base, "-2y2m" ).first ) );
71     BOOST_CHECK( !( parseMonthInterval( base, "--2m" ).first ) );
72     BOOST_CHECK( !( parseMonthInterval( base, "25m" ).first ) ); // too big
73
74     BOOST_CHECK( !( parseYearInterval( base, "12my" ).first ) );
75     BOOST_CHECK( !( parseYearInterval( base, "-2m2y" ).first ) );
76     BOOST_CHECK( !( parseYearInterval( base, "--2y" ).first ) );
77     BOOST_CHECK( !( parseYearInterval( base, "3y" ).first ) ); // too big
78
79 }
80
81 BOOST_AUTO_TEST_SUITE_END()