From 789fbf7d4c138b90dca60d9e716d6b0176c09816 Mon Sep 17 00:00:00 2001 From: laentropia Date: Thu, 16 Apr 2026 10:42:01 -0600 Subject: [PATCH] test: Added push_back tests All working --- src/arraylist.c | 2 +- test/test_arraylist.c | 134 +++++++++++++++++++++++++++++++++++------- 2 files changed, 113 insertions(+), 23 deletions(-) diff --git a/src/arraylist.c b/src/arraylist.c index 7eeb568..7b0f41f 100644 --- a/src/arraylist.c +++ b/src/arraylist.c @@ -142,7 +142,7 @@ ArrayListErr arraylist_push_back(ArrayList *arr, void *data) { } } - memcpy(arr->buffer, data, arr->elem_size); + memcpy(arr->buffer + (arr->len * arr->elem_size), data, arr->elem_size); arr->len++; return ARRLIST_OK; } diff --git a/test/test_arraylist.c b/test/test_arraylist.c index a09ebad..3e9851c 100644 --- a/test/test_arraylist.c +++ b/test/test_arraylist.c @@ -62,7 +62,7 @@ static void test_destroy_null_array(void **state) { ArrayListErr err = arraylist_destroy(&arr); assert_null(arr); - assert_int_equal(err, ARRLIST_NULL_ARG); + assert_uint_equal(err, ARRLIST_NULL_ARG); } static void test_destroy_double(void **state) { @@ -72,11 +72,11 @@ static void test_destroy_double(void **state) { assert_non_null(arr); ArrayListErr err = arraylist_destroy(&arr); - assert_int_equal(err, ARRLIST_OK); + assert_uint_equal(err, ARRLIST_OK); assert_null(arr); err = arraylist_destroy(&arr); - assert_int_equal(err, ARRLIST_NULL_ARG); + assert_uint_equal(err, ARRLIST_NULL_ARG); assert_null(arr); } @@ -87,7 +87,7 @@ static void test_capacity_after_init(void **state) { ArrayList *arr = arraylist_init(64, sizeof(int)); assert_non_null(arr); - assert_int_equal(arraylist_capacity(arr), 64); + assert_uint_equal(arraylist_capacity(arr), 64); arraylist_destroy(&arr); } @@ -110,7 +110,7 @@ static void test_is_empty_after_push(void **state) { assert_non_null(arr); int n = 8; - assert_int_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); assert_false(arraylist_is_empty(arr)); @@ -124,17 +124,17 @@ static void test_size_after_many_push(void **state) { assert_non_null(arr); int n = 8; - assert_int_equal(arraylist_push_back(arr, &n), ARRLIST_OK); - assert_int_equal(arraylist_size(arr), 1); + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 1); - assert_int_equal(arraylist_push_back(arr, &n), ARRLIST_OK); - assert_int_equal(arraylist_size(arr), 2); + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 2); - assert_int_equal(arraylist_push_back(arr, &n), ARRLIST_OK); - assert_int_equal(arraylist_size(arr), 3); + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 3); - assert_int_equal(arraylist_push_back(arr, &n), ARRLIST_OK); - assert_int_equal(arraylist_size(arr), 4); + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 4); arraylist_destroy(&arr); } @@ -146,14 +146,14 @@ static void test_capacity_growth_on_push(void **state) { assert_non_null(arr); int n = 8; - assert_int_equal(arraylist_push_back(arr, &n), ARRLIST_OK); - assert_int_equal(arraylist_capacity(arr), 2); + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_capacity(arr), 2); - assert_int_equal(arraylist_push_back(arr, &n), ARRLIST_OK); - assert_int_equal(arraylist_capacity(arr), 2); + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_capacity(arr), 2); - assert_int_equal(arraylist_push_back(arr, &n), ARRLIST_OK); - assert_int_equal(arraylist_capacity(arr), 4); + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_capacity(arr), 4); arraylist_destroy(&arr); } @@ -165,9 +165,91 @@ static void test_capacity_shrink_on_pop(void **state) { assert_non_null(arr); int n = 8; - assert_int_equal(arraylist_push_back(arr, &n), ARRLIST_OK); - assert_int_equal(arraylist_pop_back(arr, &n), ARRLIST_OK); - assert_int_equal(arraylist_capacity(arr), 4); + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_pop_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_capacity(arr), 4); + + arraylist_destroy(&arr); +} + +// push_back +static void test_push_back_single_element(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + int n = 8; + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 1); + + int b; + assert_uint_equal(arraylist_get(arr, 0, &b), ARRLIST_OK); + assert_int_equal(b, 8); + + arraylist_destroy(&arr); +} + +static void test_push_back_multiple_elements(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + int n = 8; + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 1); + + n = 9; + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 2); + + n = 10; + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 3); + + n = 11; + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 4); + + n = 12; + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 5); + + int b; + assert_uint_equal(arraylist_get(arr, 0, &b), ARRLIST_OK); + assert_int_equal(b, 8); + + assert_uint_equal(arraylist_get(arr, 1, &b), ARRLIST_OK); + assert_int_equal(b, 9); + + assert_uint_equal(arraylist_get(arr, 2, &b), ARRLIST_OK); + assert_int_equal(b, 10); + + assert_uint_equal(arraylist_get(arr, 3, &b), ARRLIST_OK); + assert_int_equal(b, 11); + + assert_uint_equal(arraylist_get(arr, 4, &b), ARRLIST_OK); + assert_int_equal(b, 12); + + arraylist_destroy(&arr); +} + +static void test_push_back_null_array(void **state) { + (void) state; + + ArrayList *arr = NULL; + + int n = 8; + assert_uint_equal(arraylist_push_back(arr, &n), ARRLIST_NULL_ARG); +} + +static void test_push_back_null_data(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + + assert_uint_equal(arraylist_push_back(arr, NULL), ARRLIST_NULL_ARG); arraylist_destroy(&arr); } @@ -195,11 +277,19 @@ int main(void) { cmocka_unit_test(test_capacity_shrink_on_pop), }; + const struct CMUnitTest push_back[] = { + cmocka_unit_test(test_push_back_single_element), + cmocka_unit_test(test_push_back_multiple_elements), + cmocka_unit_test(test_push_back_null_array), + cmocka_unit_test(test_push_back_null_data), + }; + int rc = 0; rc += cmocka_run_group_tests(init, NULL, NULL); rc += cmocka_run_group_tests(destroy, NULL, NULL); rc += cmocka_run_group_tests(state, NULL, NULL); + rc += cmocka_run_group_tests(push_back, NULL, NULL); return rc; }