Zephyr API Documentation  3.0.0
A Scalable Open Source RTOS
3.0.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 <init.h>
18#include <stdbool.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
25 const char *test_suite_name;
26 const char *name;
27 void (*test)(void *data);
29};
30
31extern struct ztest_unit_test _ztest_unit_test_list_start[];
32extern struct ztest_unit_test _ztest_unit_test_list_end[];
33
37struct ztest_suite_stats {
44};
45
50struct ztest_suite_node {
52 const char *name;
58 void *(*setup)(void);
64 void (*before)(void *data);
70 void (*after)(void *data);
76 void (*teardown)(void *data);
84 bool (*predicate)(const void *state);
87};
88
89extern struct ztest_suite_node _ztest_suite_node_list_start[];
90extern struct ztest_suite_node _ztest_suite_node_list_end[];
91
106#define ZTEST_SUITE(SUITE_NAME, PREDICATE, setup_fn, before_fn, after_fn, teardown_fn) \
107 static STRUCT_SECTION_ITERABLE(ztest_suite_node, \
108 UTIL_CAT(z_ztest_test_node_, SUITE_NAME)) = { \
109 .name = STRINGIFY(SUITE_NAME), \
110 .setup = (setup_fn), \
111 .before = (before_fn), \
112 .after = (after_fn), \
113 .teardown = (teardown_fn), \
114 .predicate = PREDICATE, \
115 }
116
124
135
145int z_ztest_run_test_suite(const char *name);
146
164
174
180
188static inline void unit_test_noop(void)
189{
190}
191
192#define Z_TEST(suite, fn, t_options, use_fixture) \
193 static void _##suite##_##fn##_wrapper(void *data); \
194 static void suite##_##fn( \
195 COND_CODE_1(use_fixture, (struct suite##_fixture *this), (void))); \
196 static STRUCT_SECTION_ITERABLE(ztest_unit_test, z_ztest_unit_test_##suite##_##fn) = { \
197 .test_suite_name = STRINGIFY(suite), \
198 .name = STRINGIFY(fn), \
199 .test = (_##suite##_##fn##_wrapper), \
200 .thread_options = t_options, \
201 }; \
202 static void _##suite##_##fn##_wrapper(void *data) \
203 { \
204 COND_CODE_1(use_fixture, (suite##_##fn((struct suite##_fixture *)data);), \
205 (ARG_UNUSED(data); suite##_##fn();)) \
206 } \
207 static inline void suite##_##fn( \
208 COND_CODE_1(use_fixture, (struct suite##_fixture *this), (void)))
209
210#define Z_ZTEST(suite, fn, t_options) Z_TEST(suite, fn, t_options, 0)
211#define Z_ZTEST_F(suite, fn, t_options) Z_TEST(suite, fn, t_options, 1)
212
222#define ZTEST(suite, fn) Z_ZTEST(suite, fn, 0)
223
233#define ZTEST_USER(suite, fn) Z_ZTEST(suite, fn, COND_CODE_1(CONFIG_USERSPACE, (K_USER), (0)))
234
244#define ZTEST_F(suite, fn) Z_ZTEST_F(suite, fn, 0)
245
255#define ZTEST_USER_F(suite, fn) Z_ZTEST_F(suite, fn, COND_CODE_1(CONFIG_USERSPACE, (K_USER), (0)))
256
266typedef void (*ztest_rule_cb)(const struct ztest_unit_test *test, void *data);
267
271};
272
285#define ZTEST_RULE(name, before_each_fn, after_each_fn) \
286 static STRUCT_SECTION_ITERABLE(ztest_test_rule, z_ztest_test_rule_##name) = { \
287 .before_each = (before_each_fn), \
288 .after_each = (after_each_fn), \
289 }
290
291extern struct ztest_test_rule _ztest_test_rule_list_start[];
292extern struct ztest_test_rule _ztest_test_rule_list_end[];
293
302
311
312/* definitions for use with testing application shared memory */
313#ifdef CONFIG_USERSPACE
314#define ZTEST_DMEM K_APP_DMEM(ztest_mem_partition)
315#define ZTEST_BMEM K_APP_BMEM(ztest_mem_partition)
316#define ZTEST_SECTION K_APP_DMEM_SECTION(ztest_mem_partition)
318#else
319#define ZTEST_DMEM
320#define ZTEST_BMEM
321#define ZTEST_SECTION .data
322#endif
323
329#define ztest_run_test_suite(suite) z_ztest_run_test_suite(STRINGIFY(suite))
330
335#ifdef __cplusplus
336}
337#endif
338
339#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:266
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:188
state
Definition: http_parser_state.h:30
#define bool
Definition: stdbool.h:13
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
Memory Partition.
Definition: mem_domain.h:55
Definition: ztest_test_deprecated.h:48
struct ztest_suite_stats stats
Definition: ztest_test_deprecated.h:62
void(* before)(void *data)
Definition: ztest_test_new.h:64
void(* teardown)(void *data)
Definition: ztest_test_new.h:76
void(* after)(void *data)
Definition: ztest_test_new.h:70
bool(* predicate)(const void *state)
Definition: ztest_test_deprecated.h:60
const char * name
Definition: ztest_test_deprecated.h:50
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:268
ztest_rule_cb after_each
Definition: ztest_test_new.h:270
ztest_rule_cb before_each
Definition: ztest_test_new.h:269
Definition: ztest_test_new.h:24
const char * name
Definition: ztest_test_new.h:26
void(* test)(void *data)
Definition: ztest_test_new.h:27
uint32_t thread_options
Definition: ztest_test_new.h:28
const char * test_suite_name
Definition: ztest_test_new.h:25
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)