Microchip® Advanced Software Framework

suite.h File Reference

Test suite core declarations.

Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries.

#include <compiler.h>
#include <parts.h>
#include <stdio.h>
#include <progmem.h>

Data Structures

struct  test_case
 A test case. More...
 
struct  test_suite
 A test suite. More...
 

Macros

#define Assert(expr)
 Assert() macro definition for unit testing. More...
 
Wrappers for printing debug information
Note
The test suite framework feeds its output to printf. It is left up to the test application to set up the stream.
#define dbg(__fmt_)   printf_P(PROGMEM_STRING(__fmt_))
 
#define dbg_info(__fmt_,...)   printf_P(PROGMEM_STRING(__fmt_), __VA_ARGS__)
 
#define dbg_error(_x,...)   printf_P(PROGMEM_STRING(_x), __VA_ARGS__)
 
#define dbg_putchar(c)   putc(c, stdout)
 
#define dbg_vprintf_pgm(...)   vfprintf_P(stdout, __VA_ARGS__)
 
Test suite definition macros
#define DEFINE_TEST_CASE(_sym, _setup, _run, _cleanup, _name)
 Create a test case struct. More...
 
#define DEFINE_TEST_ARRAY(_sym)   const struct test_case *const _sym[]
 Create an array of test case pointers. More...
 
#define DEFINE_TEST_SUITE(_sym, _test_array, _name)
 Create a test suite. More...
 

Functions

void test_case_fail (const struct test_case *test, int result, const char *file, unsigned int line, const char *fmt,...)
 Report a failure and jump out of current test case function. More...
 
Test suite interaction
int test_suite_run (const struct test_suite *suite)
 Run a test suite. More...
 

Test data access

void * test_priv_data
 Data pointer for test cases. More...
 
static void test_set_data (void *data)
 Set private data pointer for the current test. More...
 
static void * test_get_data (void)
 Get the private data pointer for the current test. More...
 

Test case pointer access

struct test_casetest_case_ptr
 Pointer to current test case. More...
 
static void test_set_case (const struct test_case *test)
 Set pointer to current test. More...
 
static struct test_casetest_get_case (void)
 Get pointer to current test. More...
 

Test result reporting

#define test_fail(test, result,...)   test_case_fail(test, result, __FILE__, __LINE__, __VA_ARGS__)
 Fail the test. More...
 
#define test_assert_true(test, condition,...)
 Verify that condition is true. More...
 
#define test_assert_false(test, condition,...)   test_assert_true(test, !(condition), __VA_ARGS__)
 Verify that condition is false. More...
 
enum  test_status {
  TEST_ERROR = -1,
  TEST_PASS = 0,
  TEST_FAIL = 1
}
 Status codes returned by test cases and fixtures. More...
 

#define Assert (   expr)
Value:
{ \
if (test_get_case() != NULL) { \
"Assertion failed: %s", #expr); \
} else { \
if (!(expr)) { \
dbg_error("Assertion '%s' failed at %s:%d\r\n", \
#expr, __FILE__, __LINE__); \
while (true); \
} \
} \
}
#define test_assert_true(test, condition,...)
Verify that condition is true.
Definition: suite.h:386
#define dbg_error(_x,...)
Definition: suite.h:208
static struct test_case * test_get_case(void)
Get pointer to current test.
Definition: suite.h:328

Assert() macro definition for unit testing.

The Assert() macro is set up to use test_assert_true(), as this will only halt execution of the current test, allowing the remaining tests a chance to complete.

Referenced by cpu_irq_leave_critical(), dfll_enable_config_defaults(), dfll_enable_source(), flashcalw_memcpy(), genclk_config_set_divider(), genclk_enable_source(), pll_config_clear_option(), pll_config_init(), pll_config_read(), pll_config_set_option(), pll_config_write(), pll_disable(), pll_enable(), pll_enable_config_defaults(), pll_enable_source(), pll_is_locked(), pll_wait_for_lock(), spi_master_setup_device(), sysclk_disable_peripheral_clock(), sysclk_enable_peripheral_clock(), sysclk_get_peripheral_bus_hz(), sysclk_init(), sysclk_set_prescalers(), sysclk_set_source(), wdt_get_config_defaults(), and wdt_init().