57 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
58 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
59 std::cerr << "Assertion failed: " << #cond << std::endl; \
62#define ASSERT_EQ(a, b) \
65 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
66 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
67 std::cerr << "Assertion failed: " << #a << " != " << #b << std::endl; \
70#define ASSERT_NE(a, b) \
73 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
74 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
75 std::cerr << "Assertion failed: " << #a << " == " << #b << std::endl; \
78#define ASSERT_LT(a, b) \
81 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
82 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
83 std::cerr << "Assertion failed: " << #a << " < " << #b << std::endl; \
86#define ASSERT_LE(a, b) \
89 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
90 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
91 std::cerr << "Assertion failed: " << #a << " <= " << #b << std::endl; \
94#define ASSERT_GT(a, b) \
97 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
98 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
99 std::cerr << "Assertion failed: " << #a << " > " << #b << std::endl; \
102#define ASSERT_GE(a, b) \
105 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
106 std::cerr << "test: " << test_name << ", line: " << __LINE__ << ", "; \
107 std::cerr << "Assertion failed: " << #a << " >= " << #b << std::endl; \
110#define ASSERT_THROW(expr, exception) \
112 bool exception_thrown = false; \
117 catch (const exception &e) \
119 exception_thrown = true; \
121 if (!exception_thrown) \
123 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
124 std::cerr << "test: " << test_name << ", line: " << __LINE__ \
126 std::cerr << "Exception not thrown: " << #exception << std::endl; \
130#define ASSERT_NO_THROW(expr) \
138 std::lock_guard<std::mutex> lock(valfuzz::get_stream_mutex()); \
139 std::cerr << "test: " << test_name << ", line: " << __LINE__ \
141 std::cerr << "Exception thrown" << std::endl; \
188#define TEST(name, pretty_name) \
189 void name([[maybe_unused]] const std::string &test_name); \
190 static struct name##_register \
194 valfuzz::add_test(pretty_name, name); \
196 } name##_register_instance; \
197 void name([[maybe_unused]] const std::string &test_name)
201 static struct before##_register \
203 before##_register() \
205 valfuzz::set_function_execute_before(before); \
207 } before##_register_instance; \
212 static struct after##_register \
216 valfuzz::set_function_execute_after(after); \
218 } after##_register_instance; \
223#define MAX_RANDOM_STRING_LEN 1024
230#define FUZZME(fun_name, pretty_name) \
231 void fun_name([[maybe_unused]] const std::string &test_name); \
232 static struct fun_name##_register \
234 fun_name##_register() \
236 valfuzz::add_fuzz_test(pretty_name, fun_name); \
238 } fun_name##_register_instance; \
239 void fun_name([[maybe_unused]] const std::string &test_name)
std::pair< std::string, fuzz_function > fuzz_pair
std::atomic< bool > & get_header()
long unsigned int get_num_fuzz_tests()
std::function< void()> & get_function_execute_after()
std::atomic< long unsigned int > & get_iterations()
std::atomic< long unsigned int > & get_max_num_threads()
void set_function_execute_before(std::function< void()> f)
std::deque< test_pair > & get_tests()
long unsigned int get_num_tests()
std::vector< std::thread > & get_thread_pool()
std::atomic< bool > & get_verbose()
void run_one_fuzz(const std::string &name)
void run_one_test(const std::string &name)
void increment_iterations()
std::atomic< bool > & get_do_fuzzing()
void set_function_execute_after(std::function< void()> f)
void add_fuzz_test(const std::string &name, fuzz_function test)
std::mutex & get_test_mutex()
void set_do_fuzzing(bool do_fuzzing)
void set_fuzz_one(const std::string &fuzz_one)
std::optional< std::string > & get_fuzz_one()
void set_test_one(const std::string &test_one)
std::pair< std::string, test_function > test_pair
void set_multithreaded(bool is_threaded)
std::atomic< bool > & get_is_threaded()
std::function< void(std::string)> test_function
void set_header(bool header)
void set_max_num_threads(long unsigned int max_num_threads)
std::function< void()> & get_function_execute_before()
std::optional< std::string > & get_test_one()
void add_test(const std::string &name, test_function test)
void parse_args(int argc, char *argv[])
std::optional< fuzz_pair > pop_fuzz_or_null()
void set_verbose(bool verbose)
std::deque< fuzz_pair > & get_fuzz_tests()
std::function< void(std::string)> fuzz_function
std::mutex & get_stream_mutex()
std::optional< test_pair > pop_test_or_null()