void DayCounterTest::testIntraday() { #ifdef QL_HIGH_RESOLUTION_DATE BOOST_TEST_MESSAGE("Testing intraday behavior of day counter ..."); const Date d1(12, February, 2015); const Date d2(14, February, 2015, 12, 34, 17, 1, 230298); const Time tol = 100*QL_EPSILON; const DayCounter dayCounters[] = { ActualActual(), Actual365Fixed(), Actual360() }; for (Size i=0; i < LENGTH(dayCounters); ++i) { const DayCounter dc = dayCounters[i]; const Time expected = ((12*60 + 34)*60 + 17 + 0.231298) * dc.yearFraction(d1, d1+1)/86400 + dc.yearFraction(d1, d1+2); BOOST_CHECK_MESSAGE( std::fabs(dc.yearFraction(d1, d2) - expected) < tol, "can not reproduce result for day counter " << dc.name()); BOOST_CHECK_MESSAGE( std::fabs(dc.yearFraction(d2, d1) + expected) < tol, "can not reproduce result for day counter " << dc.name()); } #endif }
inline bool operator==(const DayCounter& d1, const DayCounter& d2) { return (d1.empty() && d2.empty()) || (!d1.empty() && !d2.empty() && d1.name() == d2.name()); }