diff --git a/include/arraylist.h b/include/arraylist.h index 353d286..3fbf677 100644 --- a/include/arraylist.h +++ b/include/arraylist.h @@ -7,6 +7,11 @@ typedef struct ArrayList ArrayList; +// FUCK, i forgot one of the main reasons i wanted to +// implement arrays myself was because i needed +// array slices or something like this and i completely +// forgot, fuck, guess i will implement it once i get +// the tests done. typedef struct { ArrayList *array; size_t offset; diff --git a/src/arraylist.c b/src/arraylist.c index f84f414..9bb6685 100644 --- a/src/arraylist.c +++ b/src/arraylist.c @@ -64,9 +64,6 @@ ArrayListErr arraylist_clear(ArrayList *arr) { return ARRLIST_NULL_ARG; } - memset(arr->buffer, 0, arr->capacity * arr->elem_size); - arr->capacity = 0; - arr->elem_size = 0; arr->len = 0; return ARRLIST_OK; } diff --git a/test/test_arraylist.c b/test/test_arraylist.c index 56b51dc..f27c232 100644 --- a/test/test_arraylist.c +++ b/test/test_arraylist.c @@ -883,6 +883,43 @@ static void test_set_null_data(void **state) { arraylist_destroy(&arr); } +//Clear +static void test_clear_non_empty_array(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + for (size_t i = 0; i < 10; i++) { + assert_uint_equal(arraylist_push_back(arr, &i), ARRLIST_OK); + } + + assert_uint_equal(arraylist_clear(arr), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 0); + assert_uint_equal(arraylist_capacity(arr), 64); + + arraylist_destroy(&arr); +} + +static void test_clear_already_empty_array(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + assert_uint_equal(arraylist_clear(arr), ARRLIST_OK); + + arraylist_destroy(&arr); +} + +static void test_clear_null_array(void **state) { + (void) state; + + ArrayList *arr = NULL; + + assert_uint_equal(arraylist_clear(arr), ARRLIST_NULL_ARG); +} + int main(void) { const struct CMUnitTest init[] = { cmocka_unit_test(test_init_valid_parameters), @@ -974,6 +1011,12 @@ int main(void) { cmocka_unit_test(test_set_null_data), }; + const struct CMUnitTest clear[] = { + cmocka_unit_test(test_clear_non_empty_array), + cmocka_unit_test(test_clear_already_empty_array), + cmocka_unit_test(test_clear_null_array), + }; + int rc = 0; rc += cmocka_run_group_tests(init, NULL, NULL); @@ -987,6 +1030,7 @@ int main(void) { rc += cmocka_run_group_tests(remove_at, NULL, NULL); rc += cmocka_run_group_tests(get, NULL, NULL); rc += cmocka_run_group_tests(set, NULL, NULL); + rc += cmocka_run_group_tests(clear, NULL, NULL); return rc; }