array: Add an insert/create function for value based arrays

This commit is contained in:
Martin Willi
2015-12-07 10:05:07 +01:00
parent f3b2d4a9d8
commit 01caed533b
3 changed files with 68 additions and 0 deletions
@@ -491,6 +491,44 @@ START_TEST(test_invoke_offset)
}
END_TEST
START_TEST(test_insert_create)
{
array_t *array = NULL;
uintptr_t x;
array_insert_create(&array, ARRAY_TAIL, (void*)(uintptr_t)1);
array_insert_create(&array, ARRAY_TAIL, (void*)(uintptr_t)2);
ck_assert(array != NULL);
ck_assert(array_get(array, ARRAY_HEAD, &x));
ck_assert_int_eq(x, 1);
ck_assert(array_get(array, ARRAY_TAIL, &x));
ck_assert_int_eq(x, 2);
array_destroy(array);
}
END_TEST
START_TEST(test_insert_create_value)
{
array_t *array = NULL;
u_int16_t v;
v = 1;
array_insert_create_value(&array, sizeof(v), ARRAY_TAIL, &v);
v = 2;
array_insert_create_value(&array, sizeof(v), ARRAY_TAIL, &v);
ck_assert(array != NULL);
ck_assert(array_get(array, ARRAY_HEAD, &v));
ck_assert_int_eq(v, 1);
ck_assert(array_get(array, ARRAY_TAIL, &v));
ck_assert_int_eq(v, 2);
array_destroy(array);
}
END_TEST
Suite *array_suite_create()
{
Suite *s;
@@ -528,5 +566,10 @@ Suite *array_suite_create()
tcase_add_test(tc, test_invoke_offset);
suite_add_tcase(s, tc);
tc = tcase_create("insert create");
tcase_add_test(tc, test_insert_create);
tcase_add_test(tc, test_insert_create_value);
suite_add_tcase(s, tc);
return s;
}