12#define BB_BENCH_ASSERT(x)
32#define BB_DISABLE_ASSERTS() bb::AssertGuard __bb_assert_guard(bb::AssertMode::WARN)
36#define DONT_EVALUATE(expression) \
38 true ? static_cast<void>(0) : static_cast<void>((expression)); \
44#define BB_ASSERT_DEBUG(expression, ...) DONT_EVALUATE((expression))
54#define BB_ASSERT_DEBUG(expression, ...) BB_ASSERT(expression, __VA_ARGS__)
58#define BB_ASSERT(expression, ...) DONT_EVALUATE((expression))
60#define BB_ASSERT_EQ(actual, expected, ...) DONT_EVALUATE((actual) == (expected))
61#define BB_ASSERT_NEQ(actual, expected, ...) DONT_EVALUATE((actual) != (expected))
62#define BB_ASSERT_GT(left, right, ...) DONT_EVALUATE((left) > (right))
63#define BB_ASSERT_GTE(left, right, ...) DONT_EVALUATE((left) >= (right))
64#define BB_ASSERT_LT(left, right, ...) DONT_EVALUATE((left) < (right))
65#define BB_ASSERT_LTE(left, right, ...) DONT_EVALUATE((left) <= (right))
67#define BB_ASSERT(expression, ...) \
69 BB_BENCH_ASSERT("BB_ASSERT" #expression); \
70 if (!(BB_LIKELY(expression))) { \
71 info("Assertion failed: (" #expression ")"); \
72 __VA_OPT__(info("Reason : ", __VA_ARGS__);) \
73 bb::assert_failure(""); \
77#define BB_ASSERT_EQ(actual, expected, ...) \
79 BB_BENCH_ASSERT("BB_ASSERT_EQ" #actual " == " #expected); \
80 auto _actual = (actual); \
81 auto _expected = (expected); \
82 if (!(BB_LIKELY(_actual == _expected))) { \
83 std::ostringstream oss; \
84 oss << "Assertion failed: (" #actual " == " #expected ")\n"; \
85 oss << " Actual : " << _actual << "\n"; \
86 oss << " Expected: " << _expected; \
87 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
88 bb::assert_failure(oss.str()); \
92#define BB_ASSERT_NEQ(actual, expected, ...) \
94 BB_BENCH_ASSERT("BB_ASSERT_NEQ" #actual " != " #expected); \
95 auto _actual = (actual); \
96 auto _expected = (expected); \
97 if (!(BB_LIKELY(_actual != _expected))) { \
98 std::ostringstream oss; \
99 oss << "Assertion failed: (" #actual " != " #expected ")\n"; \
100 oss << " Actual : " << _actual << "\n"; \
101 oss << " Not expected: " << _expected; \
102 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
103 bb::assert_failure(oss.str()); \
107#define BB_ASSERT_GT(left, right, ...) \
109 BB_BENCH_ASSERT("BB_ASSERT_GT" #left " > " #right); \
110 auto _left = (left); \
111 auto _right = (right); \
112 if (!(BB_LIKELY(_left > _right))) { \
113 std::ostringstream oss; \
114 oss << "Assertion failed: (" #left " > " #right ")\n"; \
115 oss << " Left : " << _left << "\n"; \
116 oss << " Right : " << _right; \
117 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
118 bb::assert_failure(oss.str()); \
122#define BB_ASSERT_GTE(left, right, ...) \
124 BB_BENCH_ASSERT("BB_ASSERT_GTE" #left " >= " #right); \
125 auto _left = (left); \
126 auto _right = (right); \
127 if (!(BB_LIKELY(_left >= _right))) { \
128 std::ostringstream oss; \
129 oss << "Assertion failed: (" #left " >= " #right ")\n"; \
130 oss << " Left : " << _left << "\n"; \
131 oss << " Right : " << _right; \
132 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
133 bb::assert_failure(oss.str()); \
137#define BB_ASSERT_LT(left, right, ...) \
139 BB_BENCH_ASSERT("BB_ASSERT_LT" #left " < " #right); \
140 auto _left = (left); \
141 auto _right = (right); \
142 if (!(BB_LIKELY(_left < _right))) { \
143 std::ostringstream oss; \
144 oss << "Assertion failed: (" #left " < " #right ")\n"; \
145 oss << " Left : " << _left << "\n"; \
146 oss << " Right : " << _right; \
147 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
148 bb::assert_failure(oss.str()); \
152#define BB_ASSERT_LTE(left, right, ...) \
154 BB_BENCH_ASSERT("BB_ASSERT_LTE" #left " <= " #right); \
155 auto _left = (left); \
156 auto _right = (right); \
157 if (!(BB_LIKELY(_left <= _right))) { \
158 std::ostringstream oss; \
159 oss << "Assertion failed: (" #left " <= " #right ")\n"; \
160 oss << " Left : " << _left << "\n"; \
161 oss << " Right : " << _right; \
162 __VA_OPT__(oss << "\n Reason : " << __VA_ARGS__;) \
163 bb::assert_failure(oss.str()); \
169#ifdef BB_NO_EXCEPTIONS
170#define ASSERT_THROW_OR_ABORT(statement, matcher) ASSERT_DEATH(statement, matcher)
171#define EXPECT_THROW_OR_ABORT(statement, matcher) EXPECT_DEATH(statement, matcher)
173#define ASSERT_THROW_OR_ABORT(statement, matcher) ASSERT_THROW(statement, std::runtime_error)
174#define EXPECT_THROW_OR_ABORT(statement, matcher) EXPECT_THROW(statement, std::runtime_error)
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)