diff --git a/tests/testHarness.h b/tests/testHarness.h new file mode 100644 index 0000000..ee70907 --- /dev/null +++ b/tests/testHarness.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include +#include +#include + +namespace vftest { + +struct TestCase { + std::string name; + std::function fn; +}; + +std::vector& registry(); +int registerTest(const char* name, std::function fn); +void reportCheck(bool ok, const char* expr, const char* file, int line); + +extern int failures; +extern int checks; + +} // namespace vftest + +#define VF_TEST(name) \ + static void name(); \ + static int name##Registration = vftest::registerTest(#name, name); \ + static void name() + +#define CHECK(cond) vftest::reportCheck((cond), #cond, __FILE__, __LINE__) +#define CHECK_EQ(a, b) vftest::reportCheck((a) == (b), #a " == " #b, __FILE__, __LINE__) +#define CHECK_NEAR(a, b, eps) \ + vftest::reportCheck(std::fabs((a) - (b)) <= (eps), #a " ~= " #b, __FILE__, __LINE__)