Zephyr Project API
3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
ztest_assert.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016 Intel Corporation
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
13
#ifndef ZEPHYR_TESTSUITE_ZTEST_ASSERT_H_
14
#define ZEPHYR_TESTSUITE_ZTEST_ASSERT_H_
15
16
#include <stdarg.h>
17
#include <
stdbool.h
>
18
#include <
stdio.h
>
19
#include <
string.h
>
20
21
#include <
zephyr/ztest.h
>
22
23
#ifdef __cplusplus
24
extern
"C"
{
25
#endif
26
27
const
char
*
ztest_relative_filename
(
const
char
*file);
28
void
ztest_test_fail
(
void
);
29
void
ztest_test_skip
(
void
);
30
void
ztest_test_expect_fail
(
void
);
31
void
ztest_skip_failed_assumption
(
void
);
32
#if CONFIG_ZTEST_ASSERT_VERBOSE == 0
33
34
static
inline
bool
z_zassert_(
bool
cond,
const
char
*file,
int
line)
35
{
36
if
(cond ==
false
) {
37
PRINT
(
"\n Assertion failed at %s:%d\n"
,
ztest_relative_filename
(file), line);
38
ztest_test_fail
();
39
return
false
;
40
}
41
42
return
true
;
43
}
44
45
#define z_zassert(cond, default_msg, file, line, func, msg, ...) z_zassert_(cond, file, line)
46
47
static
inline
bool
z_zassume_(
bool
cond,
const
char
*file,
int
line)
48
{
49
if
(cond ==
false
) {
50
PRINT
(
"\n Assumption failed at %s:%d\n"
,
ztest_relative_filename
(file), line);
51
ztest_skip_failed_assumption
();
52
return
false
;
53
}
54
55
return
true
;
56
}
57
58
#define z_zassume(cond, default_msg, file, line, func, msg, ...) z_zassume_(cond, file, line)
59
60
static
inline
bool
z_zexpect_(
bool
cond,
const
char
*file,
int
line)
61
{
62
if
(cond ==
false
) {
63
PRINT
(
"\n Expectation failed at %s:%d\n"
,
ztest_relative_filename
(file), line);
64
ztest_test_expect_fail
();
65
return
false
;
66
}
67
68
return
true
;
69
}
70
71
#define z_zexpect(cond, default_msg, file, line, func, msg, ...) z_zexpect_(cond, file, line)
72
73
#else
/* CONFIG_ZTEST_ASSERT_VERBOSE != 0 */
74
75
static
inline
bool
z_zassert(
bool
cond,
const
char
*default_msg,
const
char
*file,
int
line,
76
const
char
*
func
,
const
char
*
msg
, ...)
77
{
78
if
(cond ==
false
) {
79
va_list vargs;
80
81
va_start(vargs,
msg
);
82
PRINT
(
"\n Assertion failed at %s:%d: %s: %s\n"
,
ztest_relative_filename
(file),
83
line,
func
, default_msg);
84
vprintk
(
msg
, vargs);
85
printk
(
"\n"
);
86
va_end(vargs);
87
ztest_test_fail
();
88
return
false
;
89
}
90
#if CONFIG_ZTEST_ASSERT_VERBOSE == 2
91
else
{
92
PRINT
(
"\n Assertion succeeded at %s:%d (%s)\n"
,
ztest_relative_filename
(file),
93
line,
func
);
94
}
95
#endif
96
return
true
;
97
}
98
99
static
inline
bool
z_zassume(
bool
cond,
const
char
*default_msg,
const
char
*file,
int
line,
100
const
char
*
func
,
const
char
*
msg
, ...)
101
{
102
if
(cond ==
false
) {
103
va_list vargs;
104
105
va_start(vargs,
msg
);
106
PRINT
(
"\n Assumption failed at %s:%d: %s: %s\n"
,
ztest_relative_filename
(file),
107
line,
func
, default_msg);
108
vprintk
(
msg
, vargs);
109
printk
(
"\n"
);
110
va_end(vargs);
111
ztest_skip_failed_assumption
();
112
return
false
;
113
}
114
#if CONFIG_ZTEST_ASSERT_VERBOSE == 2
115
else
{
116
PRINT
(
"\n Assumption succeeded at %s:%d (%s)\n"
,
ztest_relative_filename
(file),
117
line,
func
);
118
}
119
#endif
120
return
true
;
121
}
122
123
static
inline
bool
z_zexpect(
bool
cond,
const
char
*default_msg,
const
char
*file,
int
line,
124
const
char
*
func
,
const
char
*
msg
, ...)
125
{
126
if
(cond ==
false
) {
127
va_list vargs;
128
129
va_start(vargs,
msg
);
130
PRINT
(
"\n Expectation failed at %s:%d: %s: %s\n"
,
ztest_relative_filename
(file),
131
line,
func
, default_msg);
132
vprintk
(
msg
, vargs);
133
printk
(
"\n"
);
134
va_end(vargs);
135
ztest_test_expect_fail
();
136
return
false
;
137
}
138
#if CONFIG_ZTEST_ASSERT_VERBOSE == 2
139
else
{
140
PRINT
(
"\n Expectation succeeded at %s:%d (%s)\n"
,
ztest_relative_filename
(file),
141
line,
func
);
142
}
143
#endif
144
return
true
;
145
}
146
147
#endif
/* CONFIG_ZTEST_ASSERT_VERBOSE */
148
172
#define _zassert_base(cond, default_msg, msg, ...) \
173
do { \
174
bool _msg = (msg != NULL); \
175
bool _ret = z_zassert(cond, _msg ? ("(" default_msg ")") : (default_msg), __FILE__,\
176
__LINE__, __func__, _msg ? msg : "", ##__VA_ARGS__); \
177
(void)_msg; \
178
if (!_ret) { \
179
/* If kernel but without multithreading return. */
\
180
COND_CODE_1(KERNEL, (COND_CODE_1(CONFIG_MULTITHREADING, (), (return;))), \
181
()) \
182
} \
183
} while (0)
184
185
#define _zassert_va(cond, default_msg, msg, ...) \
186
_zassert_base(cond, default_msg, msg, ##__VA_ARGS__)
187
188
#define zassert(cond, default_msg, ...) \
189
_zassert_va(cond, default_msg, COND_CODE_1(__VA_OPT__(1), (__VA_ARGS__), (NULL)))
190
209
#define _zassume_base(cond, default_msg, msg, ...) \
210
do { \
211
bool _msg = (msg != NULL); \
212
bool _ret = z_zassume(cond, _msg ? ("(" default_msg ")") : (default_msg), __FILE__,\
213
__LINE__, __func__, _msg ? msg : "", ##__VA_ARGS__); \
214
(void)_msg; \
215
if (!_ret) { \
216
/* If kernel but without multithreading return. */
\
217
COND_CODE_1(KERNEL, (COND_CODE_1(CONFIG_MULTITHREADING, (), (return;))), \
218
()) \
219
} \
220
} while (0)
221
222
#define _zassume_va(cond, default_msg, msg, ...) \
223
_zassume_base(cond, default_msg, msg, ##__VA_ARGS__)
224
225
#define zassume(cond, default_msg, ...) \
226
_zassume_va(cond, default_msg, COND_CODE_1(__VA_OPT__(1), (__VA_ARGS__), (NULL)))
227
238
#define _zexpect_base(cond, default_msg, msg, ...) \
239
do { \
240
bool _msg = (msg != NULL); \
241
bool _ret = \
242
z_zexpect(cond, _msg ? ("(" default_msg ")") : (default_msg), __FILE__, \
243
__LINE__, __func__, _msg ? msg : "", ##__VA_ARGS__); \
244
(void)_msg; \
245
if (!_ret) { \
246
/* If kernel but without multithreading return. */
\
247
COND_CODE_1(KERNEL, (COND_CODE_1(CONFIG_MULTITHREADING, (), (return;))), \
248
()) \
249
} \
250
} while (0)
251
252
#define _zexpect_va(cond, default_msg, msg, ...) \
253
_zexpect_base(cond, default_msg, msg, ##__VA_ARGS__)
254
255
#define zexpect(cond, default_msg, ...) \
256
_zexpect_va(cond, default_msg, COND_CODE_1(__VA_OPT__(1), (__VA_ARGS__), (NULL)))
257
262
#define zassert_unreachable(...) zassert(0, "Reached unreachable code", ##__VA_ARGS__)
263
269
#define zassert_true(cond, ...) zassert(cond, #cond " is false", ##__VA_ARGS__)
270
276
#define zassert_false(cond, ...) zassert(!(cond), #cond " is true", ##__VA_ARGS__)
277
283
#define zassert_ok(cond, ...) zassert(!(cond), #cond " is non-zero", ##__VA_ARGS__)
284
290
#define zassert_not_ok(cond, ...) zassert(!!(cond), #cond " is zero", ##__VA_ARGS__)
291
297
#define zassert_is_null(ptr, ...) zassert((ptr) == NULL, #ptr " is not NULL", ##__VA_ARGS__)
298
304
#define zassert_not_null(ptr, ...) zassert((ptr) != NULL, #ptr " is NULL", ##__VA_ARGS__)
305
315
#define zassert_equal(a, b, ...) zassert((a) == (b), #a " not equal to " #b, ##__VA_ARGS__)
316
326
#define zassert_not_equal(a, b, ...) zassert((a) != (b), #a " equal to " #b, ##__VA_ARGS__)
327
337
#define zassert_equal_ptr(a, b, ...) \
338
zassert((void *)(a) == (void *)(b), #a " not equal to " #b, ##__VA_ARGS__)
339
348
#define zassert_within(a, b, d, ...) \
349
zassert(((a) >= ((b) - (d))) && ((a) <= ((b) + (d))), #a " not within " #b " +/- " #d, \
350
##__VA_ARGS__)
351
361
#define zassert_between_inclusive(a, l, u, ...) \
362
zassert(((a) >= (l)) && ((a) <= (u)), #a " not between " #l " and " #u " inclusive", \
363
##__VA_ARGS__)
364
376
#define zassert_mem_equal(...) zassert_mem_equal__(__VA_ARGS__)
377
389
#define zassert_mem_equal__(buf, exp, size, ...) \
390
zassert(memcmp(buf, exp, size) == 0, #buf " not equal to " #exp, ##__VA_ARGS__)
391
399
#define zassert_str_equal(s1, s2, ...) \
400
zassert(strcmp(s1, s2) == 0, #s1 " not equal to " #s2, ##__VA_ARGS__)
401
423
#define zassume_true(cond, ...) zassume(cond, #cond " is false", ##__VA_ARGS__)
424
433
#define zassume_false(cond, ...) zassume(!(cond), #cond " is true", ##__VA_ARGS__)
434
443
#define zassume_ok(cond, ...) zassume(!(cond), #cond " is non-zero", ##__VA_ARGS__)
444
453
#define zassume_not_ok(cond, ...) zassume(!!(cond), #cond " is zero", ##__VA_ARGS__)
454
463
#define zassume_is_null(ptr, ...) zassume((ptr) == NULL, #ptr " is not NULL", ##__VA_ARGS__)
464
473
#define zassume_not_null(ptr, ...) zassume((ptr) != NULL, #ptr " is NULL", ##__VA_ARGS__)
474
485
#define zassume_equal(a, b, ...) zassume((a) == (b), #a " not equal to " #b, ##__VA_ARGS__)
486
497
#define zassume_not_equal(a, b, ...) zassume((a) != (b), #a " equal to " #b, ##__VA_ARGS__)
498
509
#define zassume_equal_ptr(a, b, ...) \
510
zassume((void *)(a) == (void *)(b), #a " not equal to " #b, ##__VA_ARGS__)
511
522
#define zassume_within(a, b, d, ...) \
523
zassume(((a) >= ((b) - (d))) && ((a) <= ((b) + (d))), #a " not within " #b " +/- " #d, \
524
##__VA_ARGS__)
525
537
#define zassume_between_inclusive(a, l, u, ...) \
538
zassume(((a) >= (l)) && ((a) <= (u)), #a " not between " #l " and " #u " inclusive", \
539
##__VA_ARGS__)
540
552
#define zassume_mem_equal(...) zassume_mem_equal__(__VA_ARGS__)
553
567
#define zassume_mem_equal__(buf, exp, size, ...) \
568
zassume(memcmp(buf, exp, size) == 0, #buf " not equal to " #exp, ##__VA_ARGS__)
569
577
#define zassume_str_equal(s1, s2, ...) \
578
zassume(strcmp(s1, s2) == 0, #s1 " not equal to " #s2, ##__VA_ARGS__)
579
599
#define zexpect_true(cond, ...) zexpect(cond, #cond " is false", ##__VA_ARGS__)
600
607
#define zexpect_false(cond, ...) zexpect(!(cond), #cond " is true", ##__VA_ARGS__)
608
616
#define zexpect_ok(cond, ...) zexpect(!(cond), #cond " is non-zero", ##__VA_ARGS__)
617
625
#define zexpect_not_ok(cond, ...) zexpect(!!(cond), #cond " is zero", ##__VA_ARGS__)
626
633
#define zexpect_is_null(ptr, ...) zexpect((ptr) == NULL, #ptr " is not NULL", ##__VA_ARGS__)
634
641
#define zexpect_not_null(ptr, ...) zexpect((ptr) != NULL, #ptr " is NULL", ##__VA_ARGS__)
642
650
#define zexpect_equal(a, b, ...) zexpect((a) == (b), #a " not equal to " #b, ##__VA_ARGS__)
651
662
#define zexpect_not_equal(a, b, ...) zexpect((a) != (b), #a " equal to " #b, ##__VA_ARGS__)
663
673
#define zexpect_equal_ptr(a, b, ...) \
674
zexpect((void *)(a) == (void *)(b), #a " not equal to " #b, ##__VA_ARGS__)
675
685
#define zexpect_within(a, b, delta, ...) \
686
zexpect(((a) >= ((b) - (delta))) && ((a) <= ((b) + (delta))), \
687
#a " not within " #b " +/- " #delta, ##__VA_ARGS__)
688
698
#define zexpect_between_inclusive(a, lower, upper, ...) \
699
zexpect(((a) >= (lower)) && ((a) <= (upper)), \
700
#a " not between " #lower " and " #upper " inclusive", ##__VA_ARGS__)
701
711
#define zexpect_mem_equal(buf, exp, size, ...) \
712
zexpect(memcmp(buf, exp, size) == 0, #buf " not equal to " #exp, ##__VA_ARGS__)
713
722
#define zexpect_str_equal(s1, s2, ...) \
723
zexpect(strcmp(s1, s2) == 0, #s1 " not equal to " #s2, ##__VA_ARGS__)
724
729
#ifdef __cplusplus
730
}
731
#endif
732
733
#endif
/* ZEPHYR_TESTSUITE_ZTEST_ASSERT_H_ */
vprintk
static void vprintk(const char *fmt, va_list ap)
Definition
printk.h:56
printk
static void printk(const char *fmt,...)
Print kernel debugging message.
Definition
printk.h:51
stdbool.h
stdio.h
string.h
func
static void func(void *arg1, void *arg2, void *arg3)
Definition
main.c:26
msg
static void msg(uint64_t c64)
Definition
main.c:17
ztest.h
Zephyr Testsuite.
PRINT
#define PRINT
Definition
ztest.h:38
ztest_relative_filename
const char * ztest_relative_filename(const char *file)
ztest_skip_failed_assumption
void ztest_skip_failed_assumption(void)
ztest_test_expect_fail
void ztest_test_expect_fail(void)
ztest_test_fail
void ztest_test_fail(void)
ztest_test_skip
void ztest_test_skip(void)
subsys
testsuite
ztest
include
zephyr
ztest_assert.h
Generated on Sun Sep 15 2024 17:01:30 for Zephyr Project API by
1.9.8