/* * SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include "unity.h" #define CXX_UNITY_TYPE_TO_STR(x) #x /** * Very simple helper macro to catch exceptions. * * @note * * If there is any exception which not a child of std::exception, it will terminate the program! * * If there is no exception, it will jump from the current frame without de-initializing * destructors! */ #define TEST_THROW(expr_, exception_) \ do { \ bool caught = false; \ bool caught_different = false; \ try { \ expr_; \ } catch ( exception_ &e) { \ caught = true; \ } catch ( std::exception &e) { \ caught_different = true; \ } \ TEST_ASSERT_FALSE_MESSAGE(caught_different, "ERROR: Expected " CXX_UNITY_TYPE_TO_STR(exception_) \ ", but caught different exception."); \ TEST_ASSERT_TRUE_MESSAGE(caught, "ERROR: Expected " CXX_UNITY_TYPE_TO_STR(exception_) \ ", but no exception thrown."); \ } \ while (0)