13#define BB_BENCH_ASSERT(x)
33#define BB_DISABLE_ASSERTS() bb::AssertGuard __bb_assert_guard(bb::AssertMode::WARN)
37#define DONT_EVALUATE(expression) \
39 true ? static_cast<void>(0) : static_cast<void>((expression)); \
45#define BB_ASSERT_DEBUG(expression, ...) DONT_EVALUATE((expression))
55#define BB_ASSERT_DEBUG(expression, ...) BB_ASSERT(expression, __VA_ARGS__)
59#define BB_ASSERT(expression, ...) DONT_EVALUATE((expression))
61#define BB_ASSERT_EQ(actual, expected, ...) DONT_EVALUATE((actual) == (expected))
62#define BB_ASSERT_NEQ(actual, expected, ...) DONT_EVALUATE((actual) != (expected))
63#define BB_ASSERT_GT(left, right, ...) DONT_EVALUATE((left) > (right))
64#define BB_ASSERT_GTE(left, right, ...) DONT_EVALUATE((left) >= (right))
65#define BB_ASSERT_LT(left, right, ...) DONT_EVALUATE((left) < (right))
66#define BB_ASSERT_LTE(left, right, ...) DONT_EVALUATE((left) <= (right))
68#ifdef FUZZING_DISABLE_WARNINGS
69#define BB_ASSERT(expression, ...) \
71 BB_BENCH_ASSERT("BB_ASSERT" #expression); \
72 if (!(BB_LIKELY(expression))) { \
73 std::ostringstream oss; \
74 oss << "Assertion failed: (" #expression ")"; \
75 __VA_OPT__(oss << "\nReason : " << __VA_ARGS__;) \
76 bb::assert_failure(oss.str()); \
80#define BB_ASSERT(expression, ...) \
82 BB_BENCH_ASSERT("BB_ASSERT" #expression); \
83 if (!(BB_LIKELY(expression))) { \
84 std::ostringstream oss; \
85 oss << "Assertion failed: (" #expression ")"; \
86 __VA_OPT__(oss << "\nReason : " << __VA_ARGS__;) \
88 bb::assert_failure(oss.str()); \
93#define BB_ASSERT_EQ(actual, expected, ...) \
95 BB_BENCH_ASSERT("BB_ASSERT_EQ" #actual " == " #expected); \
96 const auto& _actual = (actual); \
97 const auto& _expected = (expected); \
98 if (!(BB_LIKELY(_actual == _expected))) { \
99 std::ostringstream oss; \
100 oss << "Assertion failed: (" #actual " == " #expected ")\n"; \
101 oss << " Actual : " << _actual << "\n"; \
102 oss << " Expected: " << _expected; \
103 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
104 bb::assert_failure(oss.str()); \
108#define BB_ASSERT_NEQ(actual, expected, ...) \
110 BB_BENCH_ASSERT("BB_ASSERT_NEQ" #actual " != " #expected); \
111 const auto& _actual = (actual); \
112 const auto& _expected = (expected); \
113 if (!(BB_LIKELY(_actual != _expected))) { \
114 std::ostringstream oss; \
115 oss << "Assertion failed: (" #actual " != " #expected ")\n"; \
116 oss << " Actual : " << _actual << "\n"; \
117 oss << " Not expected: " << _expected; \
118 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
119 bb::assert_failure(oss.str()); \
123#define BB_ASSERT_GT(left, right, ...) \
125 BB_BENCH_ASSERT("BB_ASSERT_GT" #left " > " #right); \
126 const auto& _left = (left); \
127 const auto& _right = (right); \
128 if (!(BB_LIKELY(_left > _right))) { \
129 std::ostringstream oss; \
130 oss << "Assertion failed: (" #left " > " #right ")\n"; \
131 oss << " Left : " << _left << "\n"; \
132 oss << " Right : " << _right; \
133 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
134 bb::assert_failure(oss.str()); \
138#define BB_ASSERT_GTE(left, right, ...) \
140 BB_BENCH_ASSERT("BB_ASSERT_GTE" #left " >= " #right); \
141 const auto& _left = (left); \
142 const auto& _right = (right); \
143 if (!(BB_LIKELY(_left >= _right))) { \
144 std::ostringstream oss; \
145 oss << "Assertion failed: (" #left " >= " #right ")\n"; \
146 oss << " Left : " << _left << "\n"; \
147 oss << " Right : " << _right; \
148 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
149 bb::assert_failure(oss.str()); \
153#define BB_ASSERT_LT(left, right, ...) \
155 BB_BENCH_ASSERT("BB_ASSERT_LT" #left " < " #right); \
156 const auto& _left = (left); \
157 const auto& _right = (right); \
158 if (!(BB_LIKELY(_left < _right))) { \
159 std::ostringstream oss; \
160 oss << "Assertion failed: (" #left " < " #right ")\n"; \
161 oss << " Left : " << _left << "\n"; \
162 oss << " Right : " << _right; \
163 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
164 bb::assert_failure(oss.str()); \
168#define BB_ASSERT_LTE(left, right, ...) \
170 BB_BENCH_ASSERT("BB_ASSERT_LTE" #left " <= " #right); \
171 const auto& _left = (left); \
172 const auto& _right = (right); \
173 if (!(BB_LIKELY(_left <= _right))) { \
174 std::ostringstream oss; \
175 oss << "Assertion failed: (" #left " <= " #right ")\n"; \
176 oss << " Left : " << _left << "\n"; \
177 oss << " Right : " << _right; \
178 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
179 bb::assert_failure(oss.str()); \
185#ifdef BB_NO_EXCEPTIONS
186#define ASSERT_THROW_OR_ABORT(statement, matcher) ASSERT_DEATH(statement, matcher)
187#define EXPECT_THROW_OR_ABORT(statement, matcher) EXPECT_DEATH(statement, matcher)
188#define EXPECT_THROW_WITH_MESSAGE(code, expectedMessage) EXPECT_DEATH(code, expectedMessage)
190#define ASSERT_THROW_OR_ABORT(statement, matcher) ASSERT_THROW(statement, std::runtime_error)
191#define EXPECT_THROW_OR_ABORT(statement, matcher) EXPECT_THROW(statement, std::runtime_error)
192#define EXPECT_THROW_WITH_MESSAGE(code, expectedMessageRegex) \
195 FAIL() << "Expected exception with message matching: " << expectedMessageRegex; \
196 } catch (const std::exception& e) { \
197 EXPECT_TRUE(std::regex_search(std::string(e.what()), std::regex(expectedMessageRegex))) \
198 << "Exception message: " << e.what() << "\nExpected to match regex: " << expectedMessageRegex; \
Entry point for Barretenberg command-line interface.
AssertMode & get_assert_mode()
void assert_failure(std::string const &err)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
AssertGuard(AssertMode mode)