summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/date_time/test/gregorian/testdate_duration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/date_time/test/gregorian/testdate_duration.cpp')
-rw-r--r--src/boost/libs/date_time/test/gregorian/testdate_duration.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/boost/libs/date_time/test/gregorian/testdate_duration.cpp b/src/boost/libs/date_time/test/gregorian/testdate_duration.cpp
new file mode 100644
index 000000000..12bee2dbb
--- /dev/null
+++ b/src/boost/libs/date_time/test/gregorian/testdate_duration.cpp
@@ -0,0 +1,77 @@
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ */
+
+#include "boost/date_time/gregorian/gregorian.hpp"
+#include "../testfrmwk.hpp"
+#include <iostream>
+
+
+void test_date_duration()
+{
+ using namespace boost::gregorian;
+
+ date_duration threeDays(3);
+ date_duration twoDays(2);
+ //date_duration zeroDays(0);
+ check("Self equal case", threeDays == threeDays);
+ check("Not equal case", !(threeDays == twoDays));
+ check("Less case succeed", twoDays < threeDays);
+ check("Not less case", !(threeDays < twoDays));
+ check("Not less case - equal", !(threeDays < threeDays));
+ check("Greater than ", !(threeDays > threeDays));
+ check("Greater equal ", threeDays >= threeDays);
+ check("Greater equal - false", !(twoDays >= threeDays));
+ check("add", twoDays + threeDays == date_duration(5));
+ date_duration fiveDays = threeDays;
+ fiveDays += twoDays;
+ check("add", fiveDays == date_duration(5));
+ date_duration tenDays = fiveDays;
+ tenDays += date_duration(5);
+ check("add", tenDays.days() == 10);
+
+ date_duration derivedOneDay = threeDays - twoDays;
+ check("Subtraction - neg result", twoDays - threeDays == date_duration(-1));
+ date_duration oneDay(1);
+ check("Subtraction", oneDay == derivedOneDay);
+ date_duration fiveDaysDerived = tenDays;
+ fiveDaysDerived -= fiveDays;
+ check("Subtraction", fiveDaysDerived == fiveDays);
+
+ oneDay = twoDays / 2;
+ check("Division", oneDay.days() == 1);
+ date_duration oneDayDivide = threeDays / 2;
+ check("Division", oneDayDivide.days() == 1);
+ date_duration hundred(100);
+ hundred /= -10;
+ check("Division", hundred.days() == -10 && hundred.is_negative());
+
+ date_duration pos_dur(123);
+ date_duration neg_dur(-pos_dur);
+ check("unary-", neg_dur.days() == -123);
+
+ // special values tests
+ date_duration pi_dur(pos_infin);
+ date_duration ni_dur(neg_infin);
+ date_duration nd_dur(not_a_date_time);
+ check("pos_inf + neg_inf", (pi_dur + ni_dur) == nd_dur);
+ //check("inf * integer", (pi_dur * 2) == pi_dur); // not implemented
+ check("neg_inf / integer", (ni_dur / 3) == ni_dur);
+ check("inf + dur", (pi_dur + hundred) == pi_dur);
+ check("unary-", date_duration(-pi_dur) == ni_dur);
+
+// date_duration dd(1);
+// dd++;
+// check("Increment", dd == twoDays);
+
+}
+
+int main() {
+ test_date_duration();
+ return printTestStats();
+
+}
+