Commit 2e6e09ac authored by Christopher Friedt's avatar Christopher Friedt Committed by Mahesh Mahadevan
Browse files

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: default avatarChristopher Friedt <cfriedt@fb.com>
parent cda7e31d
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -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);
+59 −0
Original line number Diff line number Diff line
@@ -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);
}