tests: util: PART_OF_ARRAY, IS_ARRAY_ELEMENT, ARRAY_INDEX, ..

Add tests for `PART_OF_ARRAY()`, `IS_ARRAY_ELEMENT()`,
`ARRAY_INDEX()`, and `ARRAY_INDEX_FLOOR()`.

Signed-off-by: Christopher Friedt <cfriedt@fb.com>
This commit is contained in:
Christopher Friedt 2022-09-07 13:38:40 -04:00 committed by Mahesh Mahadevan
commit 2e6e09acac
2 changed files with 99 additions and 0 deletions

View file

@ -106,6 +106,26 @@ ZTEST(util_cxx, test_mixing_GET_ARG_and_FOR_EACH) {
run_mixing_GET_ARG_and_FOR_EACH();
}
ZTEST(util_cxx, test_IS_ARRAY_ELEMENT)
{
run_IS_ARRAY_ELEMENT();
}
ZTEST(util_cxx, test_ARRAY_INDEX)
{
run_ARRAY_INDEX();
}
ZTEST(util_cxx, test_PART_OF_ARRAY)
{
run_PART_OF_ARRAY();
}
ZTEST(util_cxx, test_ARRAY_INDEX_FLOOR)
{
run_ARRAY_INDEX_FLOOR();
}
ZTEST_SUITE(util_cxx, NULL, NULL, NULL, NULL, NULL);
#if __cplusplus
@ -204,4 +224,24 @@ ZTEST(util_cc, test_mixing_GET_ARG_and_FOR_EACH) {
run_mixing_GET_ARG_and_FOR_EACH();
}
ZTEST(util_cc, test_IS_ARRAY_ELEMENT)
{
run_IS_ARRAY_ELEMENT();
}
ZTEST(util_cc, test_ARRAY_INDEX)
{
run_ARRAY_INDEX();
}
ZTEST(util_cc, test_PART_OF_ARRAY)
{
run_PART_OF_ARRAY();
}
ZTEST(util_cc, test_ARRAY_INDEX_FLOOR)
{
run_ARRAY_INDEX_FLOOR();
}
ZTEST_SUITE(util_cc, NULL, NULL, NULL, NULL, NULL);

View file

@ -467,3 +467,62 @@ void run_mixing_GET_ARG_and_FOR_EACH(void)
zassert_equal(a[3], 4);
zassert_equal(a[4], 5);
}
void run_IS_ARRAY_ELEMENT(void)
{
size_t i;
size_t array[3];
uint8_t *const alias = (uint8_t *)array;
zassert_false(IS_ARRAY_ELEMENT(array, &array[-1]));
zassert_false(IS_ARRAY_ELEMENT(array, &array[ARRAY_SIZE(array)]));
zassert_false(IS_ARRAY_ELEMENT(array, &alias[1]));
for (i = 0; i < ARRAY_SIZE(array); ++i) {
zassert_true(IS_ARRAY_ELEMENT(array, &array[i]));
}
}
void run_ARRAY_INDEX(void)
{
size_t i;
size_t array[] = {0, 1, 2, 3};
for (i = 0; i < ARRAY_SIZE(array); ++i) {
zassert_equal(array[ARRAY_INDEX(array, &array[i])], i);
}
/* ARRAY_INDEX(array, &alias[1]) asserts with CONFIG_ASSERT=y */
}
void run_PART_OF_ARRAY(void)
{
size_t i;
size_t array[3];
uint8_t *const alias = (uint8_t *)array;
ARG_UNUSED(i);
ARG_UNUSED(alias);
zassert_false(PART_OF_ARRAY(array, &array[-1]));
zassert_false(PART_OF_ARRAY(array, &array[ARRAY_SIZE(array)]));
for (i = 0; i < ARRAY_SIZE(array); ++i) {
zassert_true(PART_OF_ARRAY(array, &array[i]));
}
zassert_true(PART_OF_ARRAY(array, &alias[1]));
}
void run_ARRAY_INDEX_FLOOR(void)
{
size_t i;
size_t array[] = {0, 1, 2, 3};
uint8_t *const alias = (uint8_t *)array;
for (i = 0; i < ARRAY_SIZE(array); ++i) {
zassert_equal(array[ARRAY_INDEX_FLOOR(array, &array[i])], i);
}
zassert_equal(array[ARRAY_INDEX_FLOOR(array, &alias[1])], 0);
}