24 #ifndef ARM_COMPUTE_TEST_FRAMEWORK_ASSERTS 25 #define ARM_COMPUTE_TEST_FRAMEWORK_ASSERTS 31 #include <type_traits> 59 std::stringstream msg;
65 #define ARM_COMPUTE_TEST_INFO(INFO) \ 67 std::stringstream info; \ 69 arm_compute::test::framework::Framework::get().add_test_info(info.str()); \ 74 #define ARM_COMPUTE_TEST_COMP_FACTORY(SEVERITY, SEVERITY_NAME, COMP, COMP_NAME, ERROR_CALL) \ 75 template <typename T, typename U> \ 76 void ARM_COMPUTE_##SEVERITY##_##COMP_NAME##_IMPL(T &&x, U &&y, const std::string &x_str, const std::string &y_str, LogLevel level) \ 80 std::stringstream msg; \ 81 msg << #SEVERITY_NAME " '" << x_str << " " #COMP " " << y_str << "' failed. [" \ 82 << std::boolalpha << arm_compute::test::framework::make_printable(x) \ 84 << std::boolalpha << arm_compute::test::framework::make_printable(y) \ 86 arm_compute::test::framework::Framework::get().print_test_info(msg); \ 89 arm_compute::test::framework::Framework::get().clear_test_info(); \ 101 #define ARM_COMPUTE_ASSERT_EQUAL(X, Y) \ 102 arm_compute::test::framework::detail::ARM_COMPUTE_ASSERT_EQUAL_IMPL(X, Y, #X, #Y, LogLevel::ERRORS) 104 #define ARM_COMPUTE_EXPECT_EQUAL(X, Y, LEVEL) \ 105 arm_compute::test::framework::detail::ARM_COMPUTE_EXPECT_EQUAL_IMPL(X, Y, #X, #Y, LEVEL) 107 #define ARM_COMPUTE_EXPECT_NOT_EQUAL(X, Y, LEVEL) \ 108 arm_compute::test::framework::detail::ARM_COMPUTE_EXPECT_NOT_EQUAL_IMPL(X, Y, #X, #Y, LEVEL) 110 #define ARM_COMPUTE_ASSERT(X) \ 116 std::stringstream msg; \ 117 msg << "Assertion '" #X "' failed.\n"; \ 118 arm_compute::test::framework::Framework::get().print_test_info(msg); \ 119 throw arm_compute::test::framework::TestError(msg.str(), arm_compute::test::framework::LogLevel::ERRORS); \ 121 arm_compute::test::framework::Framework::get().clear_test_info(); \ 124 #define ARM_COMPUTE_EXPECT(X, LEVEL) \ 130 std::stringstream msg; \ 131 msg << "Expectation '" #X "' failed.\n"; \ 132 arm_compute::test::framework::Framework::get().print_test_info(msg); \ 133 arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ 135 arm_compute::test::framework::Framework::get().clear_test_info(); \ 138 #define ARM_COMPUTE_EXPECT_NO_THROW(X, LEVEL) \ 148 std::stringstream msg; \ 149 msg << "Expectation '" #X "' to not throw failed.\n"; \ 150 arm_compute::test::framework::Framework::get().print_test_info(msg); \ 151 arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ 153 arm_compute::test::framework::Framework::get().clear_test_info(); \ 156 #if defined(ARM_COMPUTE_ASSERTS_ENABLED) 157 #define ARM_COMPUTE_EXPECT_THROW(X, LEVEL) \ 160 bool exception_caught = false; \ 168 exception_caught = true; \ 170 if(!exception_caught) \ 172 std::stringstream msg; \ 173 msg << "Expectation '" #X "' to throw failed.\n"; \ 174 arm_compute::test::framework::Framework::get().print_test_info(msg); \ 175 arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ 177 arm_compute::test::framework::Framework::get().clear_test_info(); \ 179 #else // defined(ARM_COMPUTE_ASSERTS_ENABLED) 180 #define ARM_COMPUTE_EXPECT_THROW(X, LEVEL) \ 183 std::stringstream msg; \ 184 msg << "'" #X "' Skipped: asserts disabled, cannot throw\n"; \ 185 arm_compute::test::framework::Framework::get().print_test_info(msg); \ 186 arm_compute::test::framework::Framework::get().log_info(msg.str()); \ 187 arm_compute::test::framework::Framework::get().clear_test_info(); \ 189 #endif // defined(ARM_COMPUTE_ASSERTS_ENABLED) 191 #define ARM_COMPUTE_ASSERT_FAIL(MSG) \ 194 std::stringstream msg; \ 195 msg << "Assertion '" << MSG << "' failed.\n"; \ 196 arm_compute::test::framework::Framework::get().print_test_info(msg); \ 197 throw arm_compute::test::framework::TestError(msg.str(), arm_compute::test::framework::LogLevel::ERRORS); \ 198 arm_compute::test::framework::Framework::get().clear_test_info(); \ 201 #define ARM_COMPUTE_EXPECT_FAIL(MSG, LEVEL) \ 204 std::stringstream msg; \ 205 msg << "Expectation '" << MSG << "' failed.\n"; \ 206 arm_compute::test::framework::Framework::get().print_test_info(msg); \ 207 arm_compute::test::framework::Framework::get().log_failed_expectation(arm_compute::test::framework::TestError(msg.str(), LEVEL)); \ 208 arm_compute::test::framework::Framework::get().clear_test_info(); \
#define ARM_COMPUTE_TEST_COMP_FACTORY(SEVERITY, SEVERITY_NAME, COMP, COMP_NAME, ERROR_CALL)
#define ARM_COMPUTE_ASSERT_NOT_EQUAL(X, Y)
void print_test_info(std::ostream &os) const
Print test info.
int make_printable(int8_t value)
void log_failed_expectation(const TestError &error)
Tell the framework that the currently running test case failed a non-fatal expectation.
void log_info(const std::string &info)
Print the debug information that has already been logged.
Copyright (c) 2017-2021 Arm Limited.
static Framework & get()
Access to the singleton.
void ARM_COMPUTE_PRINT_INFO()
void ARM_COMPUTE_ASSERT_NOT_EQUAL_IMPL(T &&x, U &&y, const std::string &x_str, const std::string &y_str, LogLevel level)
Error class for failures during test execution.
void clear_test_info()
Clear the collected test info.