From 51f1166f315af04b63380ba11a258deff6d54a34 Mon Sep 17 00:00:00 2001 From: laentropia Date: Thu, 23 Apr 2026 10:47:23 -0600 Subject: [PATCH] test: advance tests done --- test/test_arraylist.c | 94 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/test/test_arraylist.c b/test/test_arraylist.c index ad9997f..1aa942b 100644 --- a/test/test_arraylist.c +++ b/test/test_arraylist.c @@ -1690,6 +1690,92 @@ static void test_slice_reset_null_slice(void **state) { assert_uint_equal(arrayslice_reset(slice), ARRLIST_NULL_ARG); } +//Slice advance +//out ou bounds +//null +static void test_slice_advance_valid_slice(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); + } + + ArraySlice *slice = arraylist_slice(arr, 0, arraylist_size(arr)); + assert_non_null(slice); + + int m; + for (int i = 0; i < 5; i++) { + assert_uint_equal(arrayslice_next(slice, &m), ARRLIST_OK); + assert_uint_equal(m, i); + } + + assert_uint_equal(arrayslice_advance(slice, 5), ARRLIST_OK); + + arrayslice_destroy(&slice); + arraylist_destroy(&arr); +} + +static void test_slice_advance_out_of_bounds(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); + } + + ArraySlice *slice = arraylist_slice(arr, 0, arraylist_size(arr)); + assert_non_null(slice); + + int m; + for (int i = 0; i < 5; i++) { + assert_uint_equal(arrayslice_next(slice, &m), ARRLIST_OK); + assert_uint_equal(m, i); + } + + assert_uint_equal(arrayslice_advance(slice, 40), ARRLIST_OUT_OF_BOUNDS); + + arrayslice_destroy(&slice); + arraylist_destroy(&arr); +} + +static void test_slice_advance_size_max(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); + } + + ArraySlice *slice = arraylist_slice(arr, 0, arraylist_size(arr)); + assert_non_null(slice); + + int m; + for (int i = 0; i < 5; i++) { + assert_uint_equal(arrayslice_next(slice, &m), ARRLIST_OK); + assert_uint_equal(m, i); + } + + assert_uint_equal(arrayslice_advance(slice, SIZE_MAX), ARRLIST_OUT_OF_BOUNDS); + + arrayslice_destroy(&slice); + arraylist_destroy(&arr); +} + +static void test_slice_advance_null_array(void **state) { + (void) state; + + ArraySlice *slice = NULL; + + assert_uint_equal(arrayslice_advance(slice, 56), ARRLIST_NULL_ARG); +} + int main(void) { const struct CMUnitTest init[] = { cmocka_unit_test(test_init_valid_parameters), @@ -1857,6 +1943,13 @@ int main(void) { cmocka_unit_test(test_slice_reset_null_slice), }; + const struct CMUnitTest slice_advance[] = { + cmocka_unit_test(test_slice_advance_valid_slice), + cmocka_unit_test(test_slice_advance_out_of_bounds), + cmocka_unit_test(test_slice_advance_null_array), + cmocka_unit_test(test_slice_advance_size_max), + }; + int rc = 0; rc += cmocka_run_group_tests(init, NULL, NULL); @@ -1880,6 +1973,7 @@ int main(void) { rc += cmocka_run_group_tests(slice_peek, NULL, NULL); rc += cmocka_run_group_tests(slice_next, NULL, NULL); rc += cmocka_run_group_tests(slice_reset, NULL, NULL); + rc += cmocka_run_group_tests(slice_advance, NULL, NULL); return rc; }