/* SPDX-License-Identifier: BSD-3-Clause */ /* * Copyright (c) 2020-2021, Arm Limited. All rights reserved. */ #ifndef LIBSP_TEST_MOCK_ASSERT_H_ #define LIBSP_TEST_MOCK_ASSERT_H_ #ifdef __cplusplus extern "C" { #endif #include typedef jmp_buf assert_environment_t; /* * SETUP_ASSERT_ENVIRONMENT * Both expect_assert and setjmp must be called without putting them into a new * function. The only way is to use an operator between them. Logical operators * would introduce branches which could introduce uncovered branches. The * solution is use arithmetic operators. expect_assert always return 0 so the * value of the sum is determined by the setjmp return value. * * Example usage: * assert_environment_t env; * * if (SETUP_ASSERT_ENVIRONMENT(env) { * function_with_assert_fail(); * } */ #define SETUP_ASSERT_ENVIRONMENT(env) (expect_assert(&env) + (setjmp(env) == 0)) int expect_assert(assert_environment_t *env); #ifdef __cplusplus } #endif #endif /* LIBSP_TEST_MOCK_ASSERT_H_ */