21# define __VSF_TEST_H__
172# if VSF_USE_TEST == ENABLED
177# ifndef VSF_TEST_CFG_LONGJMP
178# define VSF_TEST_CFG_LONGJMP ENABLED
182# ifndef VSF_TEST_CFG_INTERNAL_TIMEOUT_MS
183# define VSF_TEST_CFG_INTERNAL_TIMEOUT_MS 1000
187# ifndef VSF_TEST_CFG_EXTERNAL_TIMEOUT_MS
188# define VSF_TEST_CFG_EXTERNAL_TIMEOUT_MS 1500
192# ifndef VSF_TEST_CFG_USE_HAL_WDT
193# define VSF_TEST_CFG_USE_HAL_WDT DISABLED
197# ifndef VSF_TEST_CFG_USE_TRACE
198# define VSF_TEST_CFG_USE_TRACE ENABLED
203# ifndef VSF_TEST_CFG_EMIT_MARKERS
204# define VSF_TEST_CFG_EMIT_MARKERS DISABLED
212# ifndef VSF_TEST_CFG_HW_CONFIG_LOG_ONLY
213# define VSF_TEST_CFG_HW_CONFIG_LOG_ONLY DISABLED
220# ifndef VSF_TEST_MARKER_DELAY_MS
221# define VSF_TEST_MARKER_DELAY_MS 2
226# ifndef VSF_TEST_CFG_BUSY_WAIT_CYCLES_PER_MS
227# define VSF_TEST_CFG_BUSY_WAIT_CYCLES_PER_MS 22000
232# ifndef VSF_TEST_POLL_TICK_MS
233# define VSF_TEST_POLL_TICK_MS 1
241# define VSF_TEST_ASSERT(__v) \
244 vsf_test_assert(VSF_TEST_RESULT_FAIL, __FILE__, \
245 __LINE__, __FUNCTION__, #__v); \
256# define VSF_TEST_ASSERT_INST(_inst, _pt, _field) \
258 VSF_TEST_ASSERT((_inst) != NULL); \
259 VSF_TEST_ASSERT((_inst)->peripheral_type == (_pt)); \
260 VSF_TEST_ASSERT((_inst)->fixture._field != NULL); \
261 VSF_TEST_ASSERT((_inst)->name != NULL); \
272# define VSF_TEST_ASSERT_ERR(__err, __expected, ...) \
274 vsf_err_t _vsf_err = (vsf_err_t)(__err); \
275 if (_vsf_err != (vsf_err_t)(__expected)) { \
276 VSF_TEST_TRACE_ERROR(__VA_ARGS__); \
278 VSF_TEST_ASSERT(_vsf_err == (vsf_err_t)(__expected)); \
285# define VSF_TEST_ASSERT_ERR_NONE(__err, ...) \
286 VSF_TEST_ASSERT_ERR(__err, VSF_ERR_NONE, __VA_ARGS__)
294# define VSF_TEST_WAIT_FOR(__cond, __timeout_ms) \
296 uint32_t _vsf_t = (uint32_t)(__timeout_ms); \
297 while (!(__cond) && _vsf_t-- > 0) { \
298 vsf_test_busy_wait_ms(1); \
308# define VSF_TEST_SPIN_FOR(__cond, __iterations) \
310 uint32_t _vsf_i = (uint32_t)(__iterations); \
311 while (!(__cond) && _vsf_i-- > 0) {} \
320# define VSF_TEST_TRACE_ERROR(...) \
321 vsf_test_trace(VSF_TRACE_ERROR, __VA_ARGS__)
322# define VSF_TEST_TRACE_WARNING(...) \
323 vsf_test_trace(VSF_TRACE_WARNING, __VA_ARGS__)
324# define VSF_TEST_TRACE_INFO(...) \
325 vsf_test_trace(VSF_TRACE_INFO, __VA_ARGS__)
326# define VSF_TEST_TRACE_DEBUG(...) \
327 vsf_test_trace(VSF_TRACE_DEBUG, __VA_ARGS__)
491# if VSF_TEST_CFG_LONGJMP == ENABLED
528 const char *file_name,
uint32_t line,
529 const char *function_name,
530 const char *condition);
542 const char *file_name,
uint32_t line,
543 const char *function_name,
544 const char *additional_str);
Definition vsf_test.h:395
Definition vsf_test.h:362
__le16 params
Definition ieee80211.h:108
#define vsf_class(__name)
Definition ooc_class.h:52
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_adc.h:755
Definition vsf_template_dma.h:906
Definition vsf_template_flash.h:418
Definition vsf_template_gpio.h:942
I2C instance structure for multi-class support.
Definition vsf_template_i2c.h:1056
Definition vsf_template_pwm.h:288
Definition vsf_template_rng.h:197
RTC instance structure, used for RTC Multi Class support, not needed in non Multi Class mode.
Definition vsf_template_rtc.h:453
SPI instance structure, used for SPI Multi Class support, not needed in non Multi Class mode.
Definition vsf_template_spi.h:1131
Definition vsf_test.h:427
vsf_usart_t * usart
Definition vsf_test.h:429
vsf_gpio_t * gpio
Definition vsf_test.h:428
Definition vsf_test.h:421
vsf_i2c_t * slave_i2c
Definition vsf_test.h:423
vsf_i2c_t * master_i2c
Definition vsf_test.h:422
Definition vsf_test.h:432
vsf_test_gpio_pinmux_ctx_t * gpio_pinmux
Definition vsf_test.h:450
vsf_flash_t * flash
Definition vsf_test.h:445
vsf_spi_t * spi
Definition vsf_test.h:439
union vsf_test_inst_t::@104 fixture
typed hardware fixture passed to test suites
vsf_usart_t * usart
Definition vsf_test.h:438
vsf_peripheral_type_t peripheral_type
which HAL interface this instance satisfies
Definition vsf_test.h:433
vsf_rtc_t * rtc
Definition vsf_test.h:444
const char * name
human-readable instance description for logs
Definition vsf_test.h:434
vsf_wdt_t * wdt
Definition vsf_test.h:446
vsf_test_i2c_slave_ctx_t * i2c_slave
Definition vsf_test.h:449
vsf_dma_t * dma
Definition vsf_test.h:442
vsf_rng_t * rng
Definition vsf_test.h:447
void * raw
generic fallback / pass-through
Definition vsf_test.h:436
vsf_gpio_t * gpio
Definition vsf_test.h:448
vsf_adc_t * adc
Definition vsf_test.h:440
vsf_i2c_t * i2c
Definition vsf_test.h:437
vsf_timer_t * timer
Definition vsf_test.h:443
vsf_pwm_t * pwm
Definition vsf_test.h:441
Definition vsf_test_shell.h:18
Definition vsf_test.h:454
uint8_t suite_count
Definition vsf_test.h:497
uint8_t instance_count
Definition vsf_test.h:501
uint8_t result
Definition vsf_test.h:483
const char * condition
Definition vsf_test.h:487
const vsf_test_case_t * current_case
Definition vsf_test.h:475
uint8_t count
Definition vsf_test.h:461
struct vsf_test_t::@105 wdt
uint32_t line
Definition vsf_test.h:488
jmp_buf * jmp_buf
Definition vsf_test.h:492
const char * function_name
Definition vsf_test.h:485
vsf_test_shell_t shell
Embedded shell REPL — started by vsf_test_run() after init.
Definition vsf_test.h:504
const vsf_test_inst_t * instances
Peripheral instances array and count — populated at compile time.
Definition vsf_test.h:500
const vsf_test_suite_t * current_suite
Current suite pointer — set before running cases in a suite.
Definition vsf_test.h:478
vsf_test_reboot_t ** entries
Definition vsf_test.h:469
struct vsf_test_t::@106 reboot
struct vsf_test_t::@107 error
const vsf_test_suite_t ** suites
Registered suites array and count — populated at compile time.
Definition vsf_test.h:496
vsf_test_wdt_t * entries
Definition vsf_test.h:460
const char * file_name
Definition vsf_test.h:486
Definition vsf_template_timer.h:780
USART instance structure Used for USART Multi Class support.
Definition vsf_template_usart.h:1138
WDT instance structure, used for WDT Multi Class support, not needed in non Multi Class mode.
Definition vsf_template_wdt.h:428
void vsf_test_reboot_t(void)
Definition vsf_test.h:360
void vsf_test_busy_wait_ms(uint32_t ms)
Busy-wait for approximately the given milliseconds. Useful for simple inter-step delays in test scena...
Definition vsf_test.c:194
void vsf_test_jmp_fn_t(const vsf_test_suite_t *suite, const vsf_test_case_t *tc, const vsf_test_inst_t *inst)
Definition vsf_test.h:378
void vsf_test_hw_setup(vsf_test_t *test)
Board-provided hardware init for the test framework. Fills wdt, reboot entries, peripheral instances,...
void vsf_test_assert(vsf_test_result_t result, const char *file_name, uint32_t line, const char *function_name, const char *condition)
rong jump. the user does not need to directly call this API
Definition vsf_test.c:119
vsf_test_result_t vsf_test_run_suite_case(const vsf_test_suite_t *suite, uint16_t local_idx, const vsf_test_inst_t *inst)
Run a single test case within a suite. No setup/teardown is performed — the caller is responsible for...
Definition vsf_test.c:205
vsf_peripheral_type_t
Definition vsf_test.h:341
@ VSF_PERIPHERAL_TYPE_GPIO_PINMUX
Definition vsf_test.h:356
@ VSF_PERIPHERAL_TYPE_PWM
Definition vsf_test.h:348
@ VSF_PERIPHERAL_TYPE_SPI
Definition vsf_test.h:345
@ VSF_PERIPHERAL_TYPE_DMA
Definition vsf_test.h:353
@ VSF_PERIPHERAL_TYPE_TIMER
Definition vsf_test.h:349
@ VSF_PERIPHERAL_TYPE_USART
Definition vsf_test.h:344
@ VSF_PERIPHERAL_TYPE_ADC
Definition vsf_test.h:347
@ VSF_PERIPHERAL_TYPE_WDT
Definition vsf_test.h:351
@ VSF_PERIPHERAL_TYPE_ARCH
Definition vsf_test.h:357
@ VSF_PERIPHERAL_TYPE_I2C_SLAVE
Definition vsf_test.h:355
@ VSF_PERIPHERAL_TYPE_FLASH
Definition vsf_test.h:354
@ VSF_PERIPHERAL_TYPE_GPIO
Definition vsf_test.h:343
@ VSF_PERIPHERAL_TYPE_I2C
Definition vsf_test.h:346
@ VSF_PERIPHERAL_TYPE_NONE
Definition vsf_test.h:342
@ VSF_PERIPHERAL_TYPE_RNG
Definition vsf_test.h:352
@ VSF_PERIPHERAL_TYPE_RTC
Definition vsf_test.h:350
void vsf_test_reboot(vsf_test_result_t result, const char *file_name, uint32_t line, const char *function_name, const char *additional_str)
reboot, usually called inside an exception.
Definition vsf_test.c:147
void vsf_test_run_suite(const vsf_test_suite_t *suite)
Run all cases in a suite. Calls setup before the first case and teardown after the last case....
Definition vsf_test.c:256
void vsf_test_hw_config(vsf_peripheral_type_t peripheral_type, const vsf_test_inst_t *inst, bool init)
GPIO config hook called before/after running test cases on an instance. Board override (weak): config...
Definition vsf_test.c:174
struct vsf_test_case_t vsf_test_case_t
Definition vsf_test.h:377
void vsf_test_busy_wait_us(uint32_t us)
Definition vsf_test.c:200
void vsf_test_trace(uint8_t level, const char *format,...)
Definition vsf_test.c:48
vsf_test_result_t
Definition vsf_test.h:335
@ VSF_TEST_RESULT_PASS
Definition vsf_test.h:336
@ VSF_TEST_RESULT_FAIL
Definition vsf_test.h:338
@ VSF_TEST_RESULT_SKIP
Definition vsf_test.h:337
void vsf_test_run(vsf_test_t *test)
initialize vsf test
Definition vsf_test.c:90
dcl_simple_class(vsf_test_suite_t) class vsf_test_case_t
Test Suite — pure logic, no HAL binding.
Definition vsf_test.h:380