Zephyr Project API  3.1.0
A Scalable Open Source RTOS
ztest_test_new.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_TEST_H_
14#define ZEPHYR_TESTSUITE_ZTEST_TEST_H_
15
17#include <zephyr/init.h>
18#include <stdbool.h>
19
20#if defined(CONFIG_USERSPACE)
21#define __USERSPACE_FLAGS (K_USER)
22#else
23#define __USERSPACE_FLAGS (0)
24#endif
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
31 const char *test_suite_name;
32 const char *name;
33 void (*test)(void *data);
35};
36
37extern struct ztest_unit_test _ztest_unit_test_list_start[];
38extern struct ztest_unit_test _ztest_unit_test_list_end[];
39#define ZTEST_TEST_COUNT (_ztest_unit_test_list_end - _ztest_unit_test_list_start)
40
44struct ztest_suite_stats {
51};
52
57struct ztest_suite_node {
59 const char * const name;
65 void *(*const setup)(void);
71 void (*const before)(void *data);
77 void (*const after)(void *data);
83 void (*const teardown)(void *data);
91 bool (*const predicate)(const void *state);
93 struct ztest_suite_stats * const stats;
94};
95
96extern struct ztest_suite_node _ztest_suite_node_list_start[];
97extern struct ztest_suite_node _ztest_suite_node_list_end[];
98#define ZTEST_SUITE_COUNT (_ztest_suite_node_list_end - _ztest_suite_node_list_start)
99
100
115#define ZTEST_SUITE(SUITE_NAME, PREDICATE, setup_fn, before_fn, after_fn, teardown_fn) \
116 struct ztest_suite_stats UTIL_CAT(z_ztest_test_node_stats_, SUITE_NAME); \
117 static const STRUCT_SECTION_ITERABLE(ztest_suite_node, \
118 UTIL_CAT(z_ztest_test_node_, SUITE_NAME)) = { \
119 .name = STRINGIFY(SUITE_NAME), \
120 .setup = (setup_fn), \
121 .before = (before_fn), \
122 .after = (after_fn), \
123 .teardown = (teardown_fn), \
124 .predicate = PREDICATE, \
125 .stats = &UTIL_CAT(z_ztest_test_node_stats_, SUITE_NAME), \
126 }
133__syscall int ztest_run_test_suites(const void *state);
134
135#include <syscalls/ztest_test_new.h>
136
147
157int z_ztest_run_test_suite(const char *name);
158
176
186
192
200static inline void unit_test_noop(void)
201{
202}
203
204#define Z_TEST(suite, fn, t_options, use_fixture) \
205 static void _##suite##_##fn##_wrapper(void *data); \
206 static void suite##_##fn( \
207 COND_CODE_1(use_fixture, (struct suite##_fixture *this), (void))); \
208 static STRUCT_SECTION_ITERABLE(ztest_unit_test, z_ztest_unit_test_##suite##_##fn) = { \
209 .test_suite_name = STRINGIFY(suite), \
210 .name = STRINGIFY(fn), \
211 .test = (_##suite##_##fn##_wrapper), \
212 .thread_options = t_options, \
213 }; \
214 static void _##suite##_##fn##_wrapper(void *data) \
215 { \
216 COND_CODE_1(use_fixture, (suite##_##fn((struct suite##_fixture *)data);), \
217 (ARG_UNUSED(data); suite##_##fn();)) \
218 } \
219 static inline void suite##_##fn( \
220 COND_CODE_1(use_fixture, (struct suite##_fixture *this), (void)))
221
222#define Z_ZTEST(suite, fn, t_options) Z_TEST(suite, fn, t_options, 0)
223#define Z_ZTEST_F(suite, fn, t_options) Z_TEST(suite, fn, t_options, 1)
224
233#define Z_TEST_SKIP_IFDEF(config) COND_CODE_1(config, (ztest_test_skip()), ())
234
244#define ZTEST(suite, fn) Z_ZTEST(suite, fn, 0)
245
255#define ZTEST_USER(suite, fn) Z_ZTEST(suite, fn, K_USER)
256
266#define ZTEST_F(suite, fn) Z_ZTEST_F(suite, fn, 0)
267
277#define ZTEST_USER_F(suite, fn) Z_ZTEST_F(suite, fn, K_USER)
278
288typedef void (*ztest_rule_cb)(const struct ztest_unit_test *test, void *data);
289
293};
294
313#define ZTEST_RULE(name, before_each_fn, after_each_fn) \
314 static STRUCT_SECTION_ITERABLE(ztest_test_rule, z_ztest_test_rule_##name) = { \
315 .before_each = (before_each_fn), \
316 .after_each = (after_each_fn), \
317 }
318
319extern struct ztest_test_rule _ztest_test_rule_list_start[];
320extern struct ztest_test_rule _ztest_test_rule_list_end[];
321
330
339
340/* definitions for use with testing application shared memory */
341#ifdef CONFIG_USERSPACE
342#define ZTEST_DMEM K_APP_DMEM(ztest_mem_partition)
343#define ZTEST_BMEM K_APP_BMEM(ztest_mem_partition)
344#define ZTEST_SECTION K_APP_DMEM_SECTION(ztest_mem_partition)
346#else
347#define ZTEST_DMEM
348#define ZTEST_BMEM
349#define ZTEST_SECTION .data
350#endif
351
357#define ztest_run_test_suite(suite) z_ztest_run_test_suite(STRINGIFY(suite))
358
363#ifdef __cplusplus
364}
365#endif
366
367#include <syscalls/ztest_test_new.h>
368
369#endif /* ZEPHYR_TESTSUITE_ZTEST_TEST_H_ */
void ztest_test_pass(void)
Pass the currently running test.
void(* ztest_rule_cb)(const struct ztest_unit_test *test, void *data)
Test rule callback function signature.
Definition: ztest_test_new.h:288
struct k_mem_partition ztest_mem_partition
void ztest_simple_1cpu_after(void *data)
A 'after' function to use in test suites that just need to stop 1cpu.
void ztest_simple_1cpu_before(void *data)
A 'before' function to use in test suites that just need to start 1cpu.
void ztest_test_fail(void)
Fail the currently running test.
void ztest_test_skip(void)
Skip the current test.
static void unit_test_noop(void)
Do nothing, successfully.
Definition: ztest_test_new.h:200
state
Definition: http_parser_state.h:29
#define bool
Definition: stdbool.h:13
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
Memory Partition.
Definition: mem_domain.h:55
Definition: ztest_test_deprecated.h:48
void(*const teardown)(void *data)
Definition: ztest_test_new.h:83
struct ztest_suite_stats *const stats
Definition: ztest_test_new.h:93
const char *const name
Definition: ztest_test_new.h:59
void *(*const setup)(void)
Definition: ztest_test_new.h:65
const char * name
Definition: ztest_test_deprecated.h:50
void(*const after)(void *data)
Definition: ztest_test_new.h:77
void(*const before)(void *data)
Definition: ztest_test_new.h:71
bool(* predicate)(const void *state)
Definition: ztest_test_deprecated.h:60
Definition: ztest_test_deprecated.h:35
uint32_t skip_count
Definition: ztest_test_deprecated.h:39
uint32_t fail_count
Definition: ztest_test_deprecated.h:41
uint32_t run_count
Definition: ztest_test_deprecated.h:37
Definition: ztest_test_new.h:290
ztest_rule_cb after_each
Definition: ztest_test_new.h:292
ztest_rule_cb before_each
Definition: ztest_test_new.h:291
Definition: ztest_test_new.h:30
const char * name
Definition: ztest_test_new.h:32
void(* test)(void *data)
Definition: ztest_test_new.h:33
uint32_t thread_options
Definition: ztest_test_new.h:34
const char * test_suite_name
Definition: ztest_test_new.h:31
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
void ztest_verify_all_test_suites_ran(void)
Fails the test if any of the registered tests did not run.
int ztest_run_test_suites(const void *state)