/* 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 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(); }