ledger/test/unit/t_times.cc
2011-02-04 03:43:33 -05:00

169 lines
4.6 KiB
C++

#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE util
#include <boost/test/unit_test.hpp>
#include <system.hh>
#include "utils.h"
#include "times.h"
using namespace ledger;
struct times_fixture {
times_fixture() {
times_initialize();
}
~times_fixture() {
times_shutdown();
}
};
BOOST_FIXTURE_TEST_SUITE(times, times_fixture)
BOOST_AUTO_TEST_CASE(testConstructors)
{
#ifndef NOT_FOR_PYTHON
std::time_t now = std::time(NULL);
struct tm * moment = std::localtime(&now);
std::time_t localMoment = std::mktime(moment);
#endif // NOT_FOR_PYTHON
#ifndef NOT_FOR_PYTHON
date_t d0;
date_t d1;
datetime_t d3;
date_t d4;
date_t d5;
date_t d6;
date_t d7;
date_t d8;
date_t d9;
#if 0
date_t d10;
date_t d11;
date_t d12;
date_t d13;
date_t d14;
datetime_t d15;
#endif
#endif // NOT_FOR_PYTHON
d1 = parse_date("1990/01/01");
#ifndef NOT_FOR_PYTHON
d3 = boost::posix_time::from_time_t(localMoment);
#endif // NOT_FOR_PYTHON
d4 = parse_date("2006/12/25");
d5 = parse_date("12/25");
d6 = parse_date("2006.12.25");
d7 = parse_date("12.25");
d8 = parse_date("2006-12-25");
d9 = parse_date("12-25");
#ifndef NOT_FOR_PYTHON
#if 0
d10 = parse_date("tue");
d11 = parse_date("tuesday");
d12 = parse_date("feb");
d13 = parse_date("february");
d14 = parse_date("2006");
d15 = d3;
#endif
#endif // NOT_FOR_PYTHON
#ifndef NOT_FOR_PYTHON
BOOST_CHECK(d0.is_not_a_date());
BOOST_CHECK(! d1.is_not_a_date());
BOOST_CHECK(! d4.is_not_a_date());
#endif // NOT_FOR_PYTHON
BOOST_CHECK(CURRENT_DATE() > d1);
BOOST_CHECK(CURRENT_DATE() > d4);
#ifndef NOT_FOR_PYTHON
#if 0
BOOST_CHECK_EQUAL(d3, d15);
#endif
#endif // NOT_FOR_PYTHON
BOOST_CHECK_EQUAL(d4, d6);
BOOST_CHECK_EQUAL(d4, d8);
BOOST_CHECK_EQUAL(d5, d7);
BOOST_CHECK_EQUAL(d5, d9);
#ifndef NOT_FOR_PYTHON
#if 0
BOOST_CHECK_EQUAL(d10, d11);
BOOST_CHECK_EQUAL(d12, d13);
BOOST_CHECK_THROW(parse_date("2007/02/29"), boost::gregorian::bad_day_of_month);
//BOOST_CHECK_THROW(parse_date("2007/13/01"), datetime_error);
//BOOST_CHECK_THROW(parse_date("2007/00/01"), datetime_error);
BOOST_CHECK_THROW(parse_date("2007/01/00"), boost::gregorian::bad_day_of_month);
//BOOST_CHECK_THROW(parse_date("2007/00/00"), boost::gregorian::bad_day_of_month);
//BOOST_CHECK_THROW(parse_date("2007/05/32"), boost::gregorian::bad_day_of_month);
BOOST_CHECK_THROW(parse_date("2006x/12/25"), datetime_error);
BOOST_CHECK_THROW(parse_date("2006/12x/25"), datetime_error);
BOOST_CHECK_THROW(parse_date("2006/12/25x"), datetime_error);
BOOST_CHECK_THROW(parse_date("feb/12/25"), datetime_error);
BOOST_CHECK_THROW(parse_date("2006/mon/25"), datetime_error);
BOOST_CHECK_THROW(parse_date("2006/12/web"), datetime_error);
BOOST_CHECK_THROW(parse_date("12*25"), datetime_error);
BOOST_CHECK_THROW(parse_date("tuf"), datetime_error);
BOOST_CHECK_THROW(parse_date("tufsday"), datetime_error);
BOOST_CHECK_THROW(parse_date("fec"), datetime_error);
BOOST_CHECK_THROW(parse_date("fecruary"), datetime_error);
BOOST_CHECK_THROW(parse_date("207x"), datetime_error);
BOOST_CHECK_THROW(parse_date("hello"), datetime_error);
d1 = parse_date("2002-02-02");
d1 = parse_date("2002/02/02");
d1 = parse_date("2002.02.02");
d1 = parse_date("02-02-2002");
d1 = parse_date("02/02/2002");
d1 = parse_date("02.02.2002");
d1 = parse_date("02-02-02");
d1 = parse_date("02/02/02");
d1 = parse_date("02.02.02");
d1 = parse_date("02-02");
d1 = parse_date("02/02");
d1 = parse_date("02.02");
d1 = parse_date("20020202");
d1 = parse_date("20020202T023318");
d1 = parse_date("20020202T023318-0700");
d1 = parse_date("20020202T023318-0100");
d1 = parse_date("02-Feb-2002");
d1 = parse_date("2002-Feb-02");
d1 = parse_date("02 Feb 2002");
d1 = parse_date("02-Feb-2002");
d1 = parse_date("02 February 2002");
d1 = parse_date("02-February-2002");
d1 = parse_date("2002 Feb 02");
d1 = parse_date("2002-Feb-02");
d1 = parse_date("2002 February 02");
d1 = parse_date("2002-February-02");
d1 = parse_date("02 Feb");
d1 = parse_date("02-Feb");
d1 = parse_date("02 February");
d1 = parse_date("02-February");
d1 = parse_date("Feb 02");
d1 = parse_date("Feb-02");
d1 = parse_date("February 02");
d1 = parse_date("February-02");
d1 = parse_date("Feb 02, 2002");
d1 = parse_date("February 02, 2002");
d1 = parse_date("2002-02-02 12:00:00");
d1 = parse_date("2002-02-02 12:00:00 AM");
d1 = parse_date("2002-02-02 12:00 AM");
d1 = parse_date("2002-02-02 12:00AM");
d1 = parse_date("2002-02-02 12p");
d1 = parse_date("2002-02-02 12a");
BOOST_CHECK(d1.valid());
#endif // NOT_FOR_PYTHON
#endif
}
BOOST_AUTO_TEST_SUITE_END()