I'm using the Catch test framework.
In the introductory blog post the author mentions the following feature:
- Floating point tolerances supported in an easy to use way
I couldn't find any documentation on how to do this. How is this done in Catch?
It's simple. There is a class called Approx that lets you do this test in a very readable manner:
#include <limits> TEST_CASE("demo/approx", "Approx demo") { double a = 1.0; double b = a + std::numeric_limits<double>::epsilon(); REQUIRE_FALSE(b == a); REQUIRE(b == Approx(a)); } The tolerance can be changed by using the member functions epsilon() and scale() of the Approx object, like so: Approx(a).epsilon(e).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With