25 valfuzz::set_has_failed_once(true); \
26 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
27 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
28 std::cerr << "Assertion failed: " << #cond << std::endl; \
31#define ASSERT_EQ(a, b) \
34 valfuzz::set_has_failed_once(true); \
35 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
36 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
37 std::cerr << "Assertion failed: " << #a << " != " << #b << std::endl; \
40#define ASSERT_NE(a, b) \
43 valfuzz::set_has_failed_once(true); \
44 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
45 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
46 std::cerr << "Assertion failed: " << #a << " == " << #b << std::endl; \
49#define ASSERT_LT(a, b) \
52 valfuzz::set_has_failed_once(true); \
53 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
54 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
55 std::cerr << "Assertion failed: " << #a << " < " << #b << std::endl; \
58#define ASSERT_LE(a, b) \
61 valfuzz::set_has_failed_once(true); \
62 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
63 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
64 std::cerr << "Assertion failed: " << #a << " <= " << #b << std::endl; \
67#define ASSERT_GT(a, b) \
70 valfuzz::set_has_failed_once(true); \
71 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
72 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
73 std::cerr << "Assertion failed: " << #a << " > " << #b << std::endl; \
76#define ASSERT_GE(a, b) \
79 valfuzz::set_has_failed_once(true); \
80 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
81 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
82 std::cerr << "Assertion failed: " << #a << " >= " << #b << std::endl; \
85#define ASSERT_THROW(expr, exception) \
87 bool exception_thrown = false; \
92 catch (const exception &e) \
94 exception_thrown = true; \
96 if (!exception_thrown) \
98 valfuzz::set_has_failed_once(true); \
99 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
100 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
101 std::cerr << "Exception not thrown: " << #exception << std::endl; \
105#define ASSERT_NO_THROW(expr) \
113 valfuzz::set_has_failed_once(true); \
114 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
115 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
116 std::cerr << "Exception thrown" << std::endl; \
125std::deque<valfuzz::test_pair> &
get_tests();
144#define TEST(name, pretty_name) \
145 void name([[maybe_unused]] const std::string &test_name); \
146 static struct name##_register \
150 valfuzz::add_test(pretty_name, name); \
152 } name##_register_instance; \
153 void name([[maybe_unused]] const std::string &test_name)
157 static struct before##_register \
159 before##_register() \
161 valfuzz::set_function_execute_before(before); \
163 } before##_register_instance; \
168 static struct after##_register \
172 valfuzz::set_function_execute_after(after); \
174 } after##_register_instance; \
std::deque< valfuzz::test_pair > & get_tests()
std::function< void()> & get_function_execute_after()
std::optional< valfuzz::test_pair > pop_test_or_null()
void set_function_execute_before(std::function< void()> f)
long unsigned int get_num_tests()
void run_one_test(const std::string &name)
void set_function_execute_after(std::function< void()> f)
std::mutex & get_test_mutex()
void set_has_failed_once(bool has_failed_once)
std::function< void(std::string)> test_function
std::atomic< bool > & get_has_failed_once()
std::function< void()> & get_function_execute_before()
void add_test(const std::string &name, test_function test)