1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero * 2018-11-19 MurphyZhao the first version 9*10465441SEvalZero */ 10*10465441SEvalZero 11*10465441SEvalZero #ifndef __UTEST_ASSERT_H__ 12*10465441SEvalZero #define __UTEST_ASSERT_H__ 13*10465441SEvalZero 14*10465441SEvalZero #include "utest.h" 15*10465441SEvalZero #include <rtthread.h> 16*10465441SEvalZero 17*10465441SEvalZero /* No need for the user to use this function directly */ 18*10465441SEvalZero void utest_assert(int value, const char *file, int line, const char *func, const char *msg); 19*10465441SEvalZero 20*10465441SEvalZero /* No need for the user to use this function directly */ 21*10465441SEvalZero void utest_assert_string(const char *a, const char *b, rt_bool_t equal, const char *file, int line, const char *func, const char *msg); 22*10465441SEvalZero void utest_assert_buf(const char *a, const char *b, rt_size_t sz, rt_bool_t equal, const char *file, int line, const char *func, const char *msg); 23*10465441SEvalZero 24*10465441SEvalZero /* No need for the user to use this macro directly */ 25*10465441SEvalZero #define __utest_assert(value, msg) utest_assert(value, __FILE__, __LINE__, __func__, msg) 26*10465441SEvalZero 27*10465441SEvalZero /** 28*10465441SEvalZero * uassert_x macros 29*10465441SEvalZero * 30*10465441SEvalZero * @brief Get the utest data structure handle. 31*10465441SEvalZero * No need for the user to call this function directly. 32*10465441SEvalZero * 33*10465441SEvalZero * @macro uassert_true if @value is true, not assert, means passing. 34*10465441SEvalZero * @macro uassert_false if @value is false, not assert, means passing. 35*10465441SEvalZero * @macro uassert_null if @value is null, not assert, means passing. 36*10465441SEvalZero * @macro uassert_not_null if @value is not null, not assert, means passing. 37*10465441SEvalZero * @macro uassert_int_equal if @a equal to @b, not assert, means passing. Integer type test. 38*10465441SEvalZero * @macro uassert_int_not_equal if @a not equal to @b, not assert, means passing. Integer type test. 39*10465441SEvalZero * @macro uassert_str_equal if @a equal to @b, not assert, means passing. String type test. 40*10465441SEvalZero * @macro uassert_str_not_equal if @a not equal to @b, not assert, means passing. String type test. 41*10465441SEvalZero * @macro uassert_buf_equal if @a equal to @b, not assert, means passing. buf type test. 42*10465441SEvalZero * @macro uassert_buf_not_equal if @a not equal to @b, not assert, means passing. buf type test. 43*10465441SEvalZero * @macro uassert_in_range if @value is in range of min and max, not assert, means passing. 44*10465441SEvalZero * @macro uassert_not_in_range if @value is not in range of min and max, not assert, means passing. 45*10465441SEvalZero * 46*10465441SEvalZero */ 47*10465441SEvalZero #define uassert_true(value) __utest_assert(value, "(" #value ") is false") 48*10465441SEvalZero #define uassert_false(value) __utest_assert(!(value), "(" #value ") is true") 49*10465441SEvalZero #define uassert_null(value) __utest_assert((const char *)(value) == NULL, "(" #value ") is not null") 50*10465441SEvalZero #define uassert_not_null(value) __utest_assert((const char *)(value) != NULL, "(" #value ") is null") 51*10465441SEvalZero 52*10465441SEvalZero #define uassert_int_equal(a, b) __utest_assert((a) == (b), "(" #a ") not equal to (" #b ")") 53*10465441SEvalZero #define uassert_int_not_equal(a, b) __utest_assert((a) != (b), "(" #a ") equal to (" #b ")") 54*10465441SEvalZero 55*10465441SEvalZero #define uassert_str_equal(a, b) utest_assert_string((const char*)(a), (const char*)(b), RT_TRUE, __FILE__, __LINE__, __func__, "string not equal") 56*10465441SEvalZero #define uassert_str_not_equal(a, b) utest_assert_string((const char*)(a), (const char*)(b), RT_FALSE, __FILE__, __LINE__, __func__, "string equal") 57*10465441SEvalZero 58*10465441SEvalZero #define uassert_buf_equal(a, b, sz) utest_assert_buf((const char*)(a), (const char*)(b), (sz), RT_TRUE, __FILE__, __LINE__, __func__, "buf not equal") 59*10465441SEvalZero #define uassert_buf_not_equal(a, b, sz) utest_assert_buf((const char*)(a), (const char*)(b), (sz), RT_FALSE, __FILE__, __LINE__, __func__, "buf equal") 60*10465441SEvalZero 61*10465441SEvalZero #define uassert_in_range(value, min, max) __utest_assert(((value >= min) && (value <= max)), "(" #value ") not in range("#min","#max")") 62*10465441SEvalZero #define uassert_not_in_range(value, min, max) __utest_assert(!((value >= min) && (value <= max)), "(" #value ") in range("#min","#max")") 63*10465441SEvalZero 64*10465441SEvalZero #endif /* __UTEST_ASSERT_H__ */ 65