tests: convert util test to a unit test

Merge tests/misc/util with existing util unit test.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2019-09-28 09:06:02 -04:00
commit 2051ad1846
5 changed files with 85 additions and 123 deletions

View file

@ -71,10 +71,94 @@ static void test_u8_to_dec(void)
"Length of converted value using 0 byte buffer isn't 0");
}
#define TEST_DEFINE_1 1
#define TEST_DEFINE_0 0
void test_COND_CODE_1(void)
{
/* Test validates that expected code has been injected. Failure would
* be seen in compilation (lack of variable or ununsed variable.
*/
COND_CODE_1(1, (u32_t x0 = 1;), (u32_t y0;))
zassert_true((x0 == 1), NULL);
COND_CODE_1(NOT_EXISTING_DEFINE, (u32_t x1 = 1;), (u32_t y1 = 1;))
zassert_true((y1 == 1), NULL);
COND_CODE_1(TEST_DEFINE_1, (u32_t x2 = 1;), (u32_t y2 = 1;))
zassert_true((x2 == 1), NULL);
COND_CODE_1(2, (u32_t x3 = 1;), (u32_t y3 = 1;))
zassert_true((y3 == 1), NULL);
}
void test_COND_CODE_0(void)
{
/* Test validates that expected code has been injected. Failure would
* be seen in compilation (lack of variable or ununsed variable.
*/
COND_CODE_0(0, (u32_t x0 = 1;), (u32_t y0;))
zassert_true((x0 == 1), NULL);
COND_CODE_0(NOT_EXISTING_DEFINE, (u32_t x1 = 1;), (u32_t y1 = 1;))
zassert_true((y1 == 1), NULL);
COND_CODE_0(TEST_DEFINE_0, (u32_t x2 = 1;), (u32_t y2 = 1;))
zassert_true((x2 == 1), NULL);
COND_CODE_0(2, (u32_t x3 = 1;), (u32_t y3 = 1;))
zassert_true((y3 == 1), NULL);
}
void test_UTIL_LISTIFY(void)
{
int i = 0;
#define INC(x, _) \
do { \
i += x; \
} while (0);
#define DEFINE(x, _) int a##x;
#define MARK_UNUSED(x, _) ARG_UNUSED(a##x);
UTIL_LISTIFY(4, DEFINE, _)
UTIL_LISTIFY(4, MARK_UNUSED, _)
UTIL_LISTIFY(4, INC, _)
zassert_equal(i, 0 + 1 + 2 + 3, NULL);
}
static int inc_func(void)
{
static int a = 1;
return a++;
}
/* Test checks if @ref Z_MAX and @ref Z_MIN return correct result and perform
* single evaluation of input arguments.
*/
static void test_z_max_z_min(void)
{
zassert_equal(Z_MAX(inc_func(), 0), 1, "Unexpected macro result");
/* Z_MAX should have call inc_func only once */
zassert_equal(inc_func(), 2, "Unexpected return value");
zassert_equal(Z_MIN(inc_func(), 2), 2, "Unexpected macro result");
/* Z_MIN should have call inc_func only once */
zassert_equal(inc_func(), 4, "Unexpected return value");
}
void test_main(void)
{
ztest_test_suite(test_lib_sys_util_tests,
ztest_unit_test(test_u8_to_dec)
ztest_unit_test(test_u8_to_dec),
ztest_unit_test(test_COND_CODE_1),
ztest_unit_test(test_COND_CODE_0),
ztest_unit_test(test_UTIL_LISTIFY),
ztest_unit_test(test_z_max_z_min)
);
ztest_run_test_suite(test_lib_sys_util_tests);