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__)
58#ifdef FUZZING_DISABLE_WARNINGS
59#define BB_ASSERT(expression, ...) \
61 BB_BENCH_ASSERT("BB_ASSERT" #expression); \
62 if (!(BB_LIKELY(expression))) { \
63 std::ostringstream oss; \
64 oss << "Assertion failed: (" #expression ")"; \
65 __VA_OPT__(oss << "\nReason : " << __VA_ARGS__;) \
66 bb::assert_failure(oss.str()); \
70#define BB_ASSERT(expression, ...) \
72 BB_BENCH_ASSERT("BB_ASSERT" #expression); \
73 if (!(BB_LIKELY(expression))) { \
74 std::ostringstream oss; \
75 oss << "Assertion failed: (" #expression ")"; \
76 __VA_OPT__(oss << "\nReason : " << __VA_ARGS__;) \
78 bb::assert_failure(oss.str()); \
83#define BB_ASSERT_EQ(actual, expected, ...) \
85 BB_BENCH_ASSERT("BB_ASSERT_EQ" #actual " == " #expected); \
86 const auto& _actual = (actual); \
87 const auto& _expected = (expected); \
88 if (!(BB_LIKELY(_actual == _expected))) { \
89 std::ostringstream oss; \
90 oss << "Assertion failed: (" #actual " == " #expected ")\n"; \
91 oss << " Actual : " << _actual << "\n"; \
92 oss << " Expected: " << _expected; \
93 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
94 bb::assert_failure(oss.str()); \
98#define BB_ASSERT_NEQ(actual, expected, ...) \
100 BB_BENCH_ASSERT("BB_ASSERT_NEQ" #actual " != " #expected); \
101 const auto& _actual = (actual); \
102 const auto& _expected = (expected); \
103 if (!(BB_LIKELY(_actual != _expected))) { \
104 std::ostringstream oss; \
105 oss << "Assertion failed: (" #actual " != " #expected ")\n"; \
106 oss << " Actual : " << _actual << "\n"; \
107 oss << " Not expected: " << _expected; \
108 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
109 bb::assert_failure(oss.str()); \
113#define BB_ASSERT_GT(left, right, ...) \
115 BB_BENCH_ASSERT("BB_ASSERT_GT" #left " > " #right); \
116 const auto& _left = (left); \
117 const auto& _right = (right); \
118 if (!(BB_LIKELY(_left > _right))) { \
119 std::ostringstream oss; \
120 oss << "Assertion failed: (" #left " > " #right ")\n"; \
121 oss << " Left : " << _left << "\n"; \
122 oss << " Right : " << _right; \
123 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
124 bb::assert_failure(oss.str()); \
128#define BB_ASSERT_GTE(left, right, ...) \
130 BB_BENCH_ASSERT("BB_ASSERT_GTE" #left " >= " #right); \
131 const auto& _left = (left); \
132 const auto& _right = (right); \
133 if (!(BB_LIKELY(_left >= _right))) { \
134 std::ostringstream oss; \
135 oss << "Assertion failed: (" #left " >= " #right ")\n"; \
136 oss << " Left : " << _left << "\n"; \
137 oss << " Right : " << _right; \
138 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
139 bb::assert_failure(oss.str()); \
143#define BB_ASSERT_LT(left, right, ...) \
145 BB_BENCH_ASSERT("BB_ASSERT_LT" #left " < " #right); \
146 const auto& _left = (left); \
147 const auto& _right = (right); \
148 if (!(BB_LIKELY(_left < _right))) { \
149 std::ostringstream oss; \
150 oss << "Assertion failed: (" #left " < " #right ")\n"; \
151 oss << " Left : " << _left << "\n"; \
152 oss << " Right : " << _right; \
153 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
154 bb::assert_failure(oss.str()); \
158#define BB_ASSERT_LTE(left, right, ...) \
160 BB_BENCH_ASSERT("BB_ASSERT_LTE" #left " <= " #right); \
161 const auto& _left = (left); \
162 const auto& _right = (right); \
163 if (!(BB_LIKELY(_left <= _right))) { \
164 std::ostringstream oss; \
165 oss << "Assertion failed: (" #left " <= " #right ")\n"; \
166 oss << " Left : " << _left << "\n"; \
167 oss << " Right : " << _right; \
168 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
169 bb::assert_failure(oss.str()); \
176#define BB_ASSERT_NO_WASM(expression, ...) DONT_EVALUATE((expression))
177#define BB_ASSERT_EQ_NO_WASM(actual, expected, ...) DONT_EVALUATE((actual) == (expected))
178#define BB_ASSERT_LT_NO_WASM(left, right, ...) DONT_EVALUATE((left) < (right))
180#define BB_ASSERT_NO_WASM(expression, ...) BB_ASSERT(expression, __VA_ARGS__)
181#define BB_ASSERT_EQ_NO_WASM(actual, expected, ...) BB_ASSERT_EQ(actual, expected, __VA_ARGS__)
182#define BB_ASSERT_LT_NO_WASM(left, right, ...) BB_ASSERT_LT(left, right, __VA_ARGS__)
186#ifdef BB_NO_EXCEPTIONS
187#define ASSERT_THROW_OR_ABORT(statement, matcher) ASSERT_DEATH(statement, matcher)
188#define EXPECT_THROW_OR_ABORT(statement, matcher) EXPECT_DEATH(statement, matcher)
189#define EXPECT_THROW_WITH_MESSAGE(code, expectedMessage) EXPECT_DEATH(code, expectedMessage)
191#define ASSERT_THROW_OR_ABORT(statement, matcher) ASSERT_THROW(statement, std::runtime_error)
192#define EXPECT_THROW_OR_ABORT(statement, matcher) EXPECT_THROW(statement, std::runtime_error)
193#define EXPECT_THROW_WITH_MESSAGE(code, expectedMessageRegex) \
196 FAIL() << "Expected exception with message matching: " << expectedMessageRegex; \
197 } catch (const std::exception& e) { \
198 EXPECT_TRUE(std::regex_search(std::string(e.what()), std::regex(expectedMessageRegex))) \
199 << "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)