153 lines
3.6 KiB
C
153 lines
3.6 KiB
C
/*
|
|
* Copyright (c) 2016 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
*
|
|
* @brief Zephyr testing framework _test.
|
|
*/
|
|
|
|
#ifndef __ZTEST_TEST_H__
|
|
#define __ZTEST_TEST_H__
|
|
|
|
struct unit_test {
|
|
const char *name;
|
|
void (*test)(void);
|
|
void (*setup)(void);
|
|
void (*teardown)(void);
|
|
u32_t thread_options;
|
|
};
|
|
|
|
void _ztest_run_test_suite(const char *name, struct unit_test *suite);
|
|
|
|
/**
|
|
* @defgroup ztest_test Ztest testing macros
|
|
* @ingroup ztest
|
|
*
|
|
* This module eases the testing process by providing helpful macros and other
|
|
* testing structures.
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief Fail the currently running test.
|
|
*
|
|
* This is the function called from failed assertions and the like. You
|
|
* probably don't need to call it yourself.
|
|
*/
|
|
void ztest_test_fail(void);
|
|
|
|
/**
|
|
* @brief Pass the currently running test.
|
|
*
|
|
* Normally a test passes just by returning without an assertion failure.
|
|
* However, if the success case for your test involves a fatal fault,
|
|
* you can call this function from _SysFatalErrorHandler to indicate that
|
|
* the test passed before aborting the thread.
|
|
*/
|
|
void ztest_test_pass(void);
|
|
|
|
/**
|
|
* @brief Do nothing, successfully.
|
|
*
|
|
* Unit test / setup function / teardown function that does
|
|
* nothing, successfully. Can be used as a parameter to
|
|
* ztest_unit_test_setup_teardown().
|
|
*/
|
|
static inline void unit_test_noop(void)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* @brief Define a test with setup and teardown functions
|
|
*
|
|
* This should be called as an argument to ztest_test_suite. The test will
|
|
* be run in the following order: @a setup, @a fn, @a teardown.
|
|
*
|
|
* @param fn Main test function
|
|
* @param setup Setup function
|
|
* @param teardown Teardown function
|
|
*/
|
|
|
|
#define ztest_unit_test_setup_teardown(fn, setup, teardown) { \
|
|
STRINGIFY(fn), fn, setup, teardown, 0 \
|
|
}
|
|
|
|
/**
|
|
* @brief Define a user mode test with setup and teardown functions
|
|
*
|
|
* This should be called as an argument to ztest_test_suite. The test will
|
|
* be run in the following order: @a setup, @a fn, @a teardown. ALL
|
|
* test functions will be run in user mode, and only if CONFIG_USERSPACE
|
|
* is enabled, otherwise this is the same as ztest_unit_test_setup_teardown().
|
|
*
|
|
* @param fn Main test function
|
|
* @param setup Setup function
|
|
* @param teardown Teardown function
|
|
*/
|
|
|
|
#define ztest_user_unit_test_setup_teardown(fn, setup, teardown) { \
|
|
STRINGIFY(fn), fn, setup, teardown, K_USER \
|
|
}
|
|
|
|
/**
|
|
* @brief Define a test function
|
|
*
|
|
* This should be called as an argument to ztest_test_suite.
|
|
*
|
|
* @param fn Test function
|
|
*/
|
|
|
|
#define ztest_unit_test(fn) \
|
|
ztest_unit_test_setup_teardown(fn, unit_test_noop, unit_test_noop)
|
|
|
|
/**
|
|
* @brief Define a test function that should run as a user thread
|
|
*
|
|
* This should be called as an argument to ztest_test_suite.
|
|
* If CONFIG_USERSPACE is not enabled, this is functionally identical to
|
|
* ztest_unit_test().
|
|
*
|
|
* @param fn Test function
|
|
*/
|
|
|
|
#define ztest_user_unit_test(fn) \
|
|
ztest_user_unit_test_setup_teardown(fn, unit_test_noop, unit_test_noop)
|
|
|
|
/**
|
|
* @brief Define a test suite
|
|
*
|
|
* This function should be called in the following fashion:
|
|
* ```{.c}
|
|
* ztest_test_suite(test_suite_name,
|
|
* ztest_unit_test(test_function),
|
|
* ztest_unit_test(test_other_function)
|
|
* );
|
|
*
|
|
* ztest_run_test_suite(test_suite_name);
|
|
* ```
|
|
*
|
|
* @param name Name of the testing suite
|
|
*/
|
|
#define ztest_test_suite(name, ...) \
|
|
static struct unit_test _##name[] = { \
|
|
__VA_ARGS__, { 0 } \
|
|
}
|
|
/**
|
|
* @brief Run the specified test suite.
|
|
*
|
|
* @param suite Test suite to run.
|
|
*/
|
|
#define ztest_run_test_suite(suite) \
|
|
_ztest_run_test_suite(#suite, _##suite)
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif /* __ZTEST_ASSERT_H__ */
|