1*99a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause 2*99a2dd95SBruce Richardson * Copyright(c) 2015 Cavium, Inc 3*99a2dd95SBruce Richardson */ 4*99a2dd95SBruce Richardson 5*99a2dd95SBruce Richardson #ifndef _RTE_TEST_H_ 6*99a2dd95SBruce Richardson #define _RTE_TEST_H_ 7*99a2dd95SBruce Richardson 8*99a2dd95SBruce Richardson #include <rte_log.h> 9*99a2dd95SBruce Richardson 10*99a2dd95SBruce Richardson /* Before including rte_test.h file you can define 11*99a2dd95SBruce Richardson * RTE_TEST_TRACE_FAILURE(_file, _line, _func) macro to better trace/debug test 12*99a2dd95SBruce Richardson * failures. Mostly useful in development phase. 13*99a2dd95SBruce Richardson */ 14*99a2dd95SBruce Richardson #ifndef RTE_TEST_TRACE_FAILURE 15*99a2dd95SBruce Richardson #define RTE_TEST_TRACE_FAILURE(_file, _line, _func) 16*99a2dd95SBruce Richardson #endif 17*99a2dd95SBruce Richardson 18*99a2dd95SBruce Richardson 19*99a2dd95SBruce Richardson #define RTE_TEST_ASSERT(cond, msg, ...) do { \ 20*99a2dd95SBruce Richardson if (!(cond)) { \ 21*99a2dd95SBruce Richardson RTE_LOG(ERR, EAL, "Test assert %s line %d failed: " \ 22*99a2dd95SBruce Richardson msg "\n", __func__, __LINE__, ##__VA_ARGS__); \ 23*99a2dd95SBruce Richardson RTE_TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__); \ 24*99a2dd95SBruce Richardson return -1; \ 25*99a2dd95SBruce Richardson } \ 26*99a2dd95SBruce Richardson } while (0) 27*99a2dd95SBruce Richardson 28*99a2dd95SBruce Richardson #define RTE_TEST_ASSERT_EQUAL(a, b, msg, ...) \ 29*99a2dd95SBruce Richardson RTE_TEST_ASSERT(a == b, msg, ##__VA_ARGS__) 30*99a2dd95SBruce Richardson 31*99a2dd95SBruce Richardson #define RTE_TEST_ASSERT_NOT_EQUAL(a, b, msg, ...) \ 32*99a2dd95SBruce Richardson RTE_TEST_ASSERT(a != b, msg, ##__VA_ARGS__) 33*99a2dd95SBruce Richardson 34*99a2dd95SBruce Richardson #define RTE_TEST_ASSERT_SUCCESS(val, msg, ...) \ 35*99a2dd95SBruce Richardson RTE_TEST_ASSERT(val == 0, msg, ##__VA_ARGS__) 36*99a2dd95SBruce Richardson 37*99a2dd95SBruce Richardson #define RTE_TEST_ASSERT_FAIL(val, msg, ...) \ 38*99a2dd95SBruce Richardson RTE_TEST_ASSERT(val != 0, msg, ##__VA_ARGS__) 39*99a2dd95SBruce Richardson 40*99a2dd95SBruce Richardson #define RTE_TEST_ASSERT_NULL(val, msg, ...) \ 41*99a2dd95SBruce Richardson RTE_TEST_ASSERT(val == NULL, msg, ##__VA_ARGS__) 42*99a2dd95SBruce Richardson 43*99a2dd95SBruce Richardson #define RTE_TEST_ASSERT_NOT_NULL(val, msg, ...) \ 44*99a2dd95SBruce Richardson RTE_TEST_ASSERT(val != NULL, msg, ##__VA_ARGS__) 45*99a2dd95SBruce Richardson 46*99a2dd95SBruce Richardson #endif /* _RTE_TEST_H_ */ 47