|
Boost Users : |
Subject: [Boost-users] [boost.test] floating point comparison with user defined type
From: Georgios Sermaidis (g.sermaidis_at_[hidden])
Date: 2018-03-20 22:46:17
Hello,
I have created a class to represent the euro currency and I am trying to use boost.test to check if two euro amounts are sufficiently close. I was expecting the following to pass the test given the tolerance level I have set, but instead it fails.
What is the proper way to compare two user-defined decimals? Thank you for your time.
#define BOOST_TEST_MODULE My Test
#include <boost/test/included/unit_test.hpp>
class eur {
long double m_amount;
public:
eur(long double amount)
: m_amount(amount){}
bool operator ==(const eur& rhs) const {
return m_amount == rhs.m_amount;
}
bool operator !=(const eur& rhs) const {
return m_amount != rhs.m_amount;
}
friend std::ostream& operator <<(std::ostream& os, const eur& rhs);
};
std::ostream& operator <<(std::ostream& os, const eur& rhs) {
os << "EUR " << rhs.m_amount;
return os;
}
BOOST_TEST_DECORATOR(* boost::unit_test::tolerance(eur(0.1)))
BOOST_AUTO_TEST_CASE(first_test)
{
eur x(1.1);
eur y(1.2);
BOOST_TEST(x == y);
}
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net