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