From b34fb9902fa12ac520603d193a78272156b2144a Mon Sep 17 00:00:00 2001 From: laentropia Date: Wed, 22 Apr 2026 17:26:49 -0600 Subject: [PATCH] test: added tests for slice_unsafe --- test/test_arraylist.c | 98 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/test/test_arraylist.c b/test/test_arraylist.c index 80becad..b52d403 100644 --- a/test/test_arraylist.c +++ b/test/test_arraylist.c @@ -1339,6 +1339,94 @@ static void test_slice_null_arr(void **state) { assert_null(slice); } +// Slice Unsafe +static void test_slice_unsafe_valid_init(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); + } + + ArraySlice *slice = arraylist_slice(arr, 0, 10); + assert_non_null(slice); + + arrayslice_destroy(&slice); + arraylist_destroy(&arr); +} + +static void test_slice_unsafe_invalid_index(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); + } + + ArraySlice *slice = arraylist_slice(arr, 32, 10); + assert_null(slice); + + arraylist_destroy(&arr); +} + +static void test_slice_unsafe_invalid_len(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); + } + + ArraySlice *slice = arraylist_slice(arr, 0, 300); + assert_null(slice); + + arraylist_destroy(&arr); +} + +static void test_slice_unsafe_len_zero(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); + } + + ArraySlice *slice = arraylist_slice(arr, 0, 0); + assert_null(slice); + + arraylist_destroy(&arr); +} + +static void test_slice_unsafe_empty_array(void **state) { + (void) state; + + ArrayList *arr = arraylist_init(64, sizeof(int)); + assert_non_null(arr); + + + ArraySlice *slice = arraylist_slice(arr, 0, 10); + assert_null(slice); + + arraylist_destroy(&arr); +} + +static void test_slice_unsafe_null_arr(void **state) { + (void) state; + + ArrayList *arr = NULL; + + ArraySlice *slice = arraylist_slice(arr, 0, 10); + assert_null(slice); +} + int main(void) { const struct CMUnitTest init[] = { cmocka_unit_test(test_init_valid_parameters), @@ -1471,6 +1559,15 @@ int main(void) { cmocka_unit_test(test_slice_null_arr), }; + const struct CMUnitTest slice_array_unsafe[] = { + cmocka_unit_test(test_slice_unsafe_valid_init), + cmocka_unit_test(test_slice_unsafe_invalid_index), + cmocka_unit_test(test_slice_unsafe_invalid_len), + cmocka_unit_test(test_slice_unsafe_len_zero), + cmocka_unit_test(test_slice_unsafe_empty_array), + cmocka_unit_test(test_slice_unsafe_null_arr), + }; + int rc = 0; rc += cmocka_run_group_tests(init, NULL, NULL); @@ -1489,6 +1586,7 @@ int main(void) { rc += cmocka_run_group_tests(reserve, NULL, NULL); rc += cmocka_run_group_tests(slice_array, NULL, NULL); + rc += cmocka_run_group_tests(slice_array_unsafe, NULL, NULL); return rc; }