diff --git a/test/test_arraylist.c b/test/test_arraylist.c index 6b62391..d2de6e8 100644 --- a/test/test_arraylist.c +++ b/test/test_arraylist.c @@ -310,6 +310,104 @@ static void test_push_front_null_data(void **state) { arraylist_destroy(&arr); } +// Insert +static void test_insert_at_beginning(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + for (int i = 0; i < 10; i++) { + assert_uint_equal(arraylist_push_back(arr, &i), ARRLIST_OK); + } + + int n = 8; + int m; + assert_uint_equal(arraylist_size(arr), 10); + assert_uint_equal(arraylist_insert(arr, 0, &n), ARRLIST_OK); + assert_uint_equal(arraylist_get(arr, 0, &m), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 11); + assert_uint_equal(n, m); + + arraylist_destroy(&arr); +} + +static void test_insert_at_middle(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + for (int i = 0; i < 10; i++) { + assert_uint_equal(arraylist_push_back(arr, &i), ARRLIST_OK); + } + + int n = 8; + int m; + assert_uint_equal(arraylist_size(arr), 10); + assert_uint_equal(arraylist_insert(arr, 5, &n), ARRLIST_OK); + assert_uint_equal(arraylist_get(arr, 5, &m), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 11); + assert_uint_equal(n, m); + + arraylist_destroy(&arr); +} + +static void test_insert_at_end(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + for (int i = 0; i < 10; i++) { + assert_uint_equal(arraylist_push_back(arr, &i), ARRLIST_OK); + } + + int n = 8; + int m; + assert_uint_equal(arraylist_size(arr), 10); + assert_uint_equal(arraylist_insert(arr, 10, &n), ARRLIST_OK); + assert_uint_equal(arraylist_get(arr, 10, &m), ARRLIST_OK); + assert_uint_equal(arraylist_size(arr), 11); + assert_uint_equal(n, m); + + arraylist_destroy(&arr); +} + +static void test_insert_at_invalid_index(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + + int n = 8; + assert_uint_equal(arraylist_insert(arr, 80, &n), ARRLIST_OUT_OF_BOUNDS); + + arraylist_destroy(&arr); +} + +static void test_insert_null_array(void **state) { + (void) state; + + ArrayList *arr = NULL; + + int n = 8; + assert_uint_equal(arraylist_insert(arr, 0, &n), ARRLIST_NULL_ARG); +} + +static void test_insert_null_data(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + + assert_uint_equal(arraylist_insert(arr, 0, NULL), ARRLIST_NULL_ARG); + + arraylist_destroy(&arr); +} + int main(void) { const struct CMUnitTest init[] = { cmocka_unit_test(test_init_valid_parameters), @@ -347,6 +445,15 @@ int main(void) { cmocka_unit_test(test_push_front_null_data), }; + const struct CMUnitTest insert[] = { + cmocka_unit_test(test_insert_at_beginning), + cmocka_unit_test(test_insert_at_middle), + cmocka_unit_test(test_insert_at_end), + cmocka_unit_test(test_insert_at_invalid_index), + cmocka_unit_test(test_insert_null_array), + cmocka_unit_test(test_insert_null_data), + }; + int rc = 0; rc += cmocka_run_group_tests(init, NULL, NULL); @@ -354,6 +461,7 @@ int main(void) { rc += cmocka_run_group_tests(state, NULL, NULL); rc += cmocka_run_group_tests(push_back, NULL, NULL); rc += cmocka_run_group_tests(push_front, NULL, NULL); + rc += cmocka_run_group_tests(insert, NULL, NULL); return rc; }