summaryrefslogtreecommitdiff
path: root/test/unit/t_times.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/t_times.cc')
-rw-r--r--test/unit/t_times.cc166
1 files changed, 166 insertions, 0 deletions
diff --git a/test/unit/t_times.cc b/test/unit/t_times.cc
new file mode 100644
index 00000000..d8a67b43
--- /dev/null
+++ b/test/unit/t_times.cc
@@ -0,0 +1,166 @@
+#include <system.hh>
+
+#include "t_times.h"
+
+#include "utils.h"
+#include "times.h"
+
+using namespace ledger;
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(DateTimeTestCase, "util");
+
+void DateTimeTestCase::setUp()
+{
+ times_initialize();
+}
+
+void DateTimeTestCase::tearDown()
+{
+ times_shutdown();
+}
+
+void DateTimeTestCase::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
+ assertTrue(d0.is_not_a_date());
+ assertFalse(d1.is_not_a_date());
+ assertFalse(d4.is_not_a_date());
+#endif // NOT_FOR_PYTHON
+
+ assertTrue(CURRENT_DATE() > d1);
+ assertTrue(CURRENT_DATE() > d4);
+
+#ifndef NOT_FOR_PYTHON
+#if 0
+ assertEqual(d3, d15);
+#endif
+#endif // NOT_FOR_PYTHON
+ assertEqual(d4, d6);
+ assertEqual(d4, d8);
+ assertEqual(d5, d7);
+ assertEqual(d5, d9);
+#ifndef NOT_FOR_PYTHON
+#if 0
+ assertEqual(d10, d11);
+ assertEqual(d12, d13);
+
+ assertThrow(parse_date("2007/02/29"), boost::gregorian::bad_day_of_month);
+ //assertThrow(parse_date("2007/13/01"), datetime_error);
+ //assertThrow(parse_date("2007/00/01"), datetime_error);
+ assertThrow(parse_date("2007/01/00"), boost::gregorian::bad_day_of_month);
+ //assertThrow(parse_date("2007/00/00"), boost::gregorian::bad_day_of_month);
+ //assertThrow(parse_date("2007/05/32"), boost::gregorian::bad_day_of_month);
+
+ assertThrow(parse_date("2006x/12/25"), datetime_error);
+ assertThrow(parse_date("2006/12x/25"), datetime_error);
+ assertThrow(parse_date("2006/12/25x"), datetime_error);
+
+ assertThrow(parse_date("feb/12/25"), datetime_error);
+ assertThrow(parse_date("2006/mon/25"), datetime_error);
+ assertThrow(parse_date("2006/12/web"), datetime_error);
+
+ assertThrow(parse_date("12*25"), datetime_error);
+
+ assertThrow(parse_date("tuf"), datetime_error);
+ assertThrow(parse_date("tufsday"), datetime_error);
+ assertThrow(parse_date("fec"), datetime_error);
+ assertThrow(parse_date("fecruary"), datetime_error);
+ assertThrow(parse_date("207x"), datetime_error);
+ assertThrow(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");
+
+ assertValid(d1);
+#endif // NOT_FOR_PYTHON
+#endif
+}