| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #include <cmocka.h>
- #include "scufcont/DArray.h"
- #include "scufcont/scufcont.h"
- SCDARRAY_HEADER(int, int)
- SCDARRAY_IMPL(int, int)
- void test_DArray_alloc(void** state) {
- (void) state;
- SCDArray_int arr;
- assert_true(SCDArray_int_alloc(&arr) == SCUFCONT_SUCCESS);
- assert_non_null(arr.data);
- assert_uint_equal(arr.len, 0u);
- assert_uint_equal(arr.capacity, 1u);
- SCDArray_int_free(&arr);
- }
- void test_DArray_push_back(void** state) {
- (void) state;
- SCDArray_int arr;
- SCDArray_int_alloc(&arr);
- assert_true(SCDArray_int_push_back(&arr, &(int){7}) == SCUFCONT_SUCCESS);
- assert_true(arr.data[0] == 7);
- assert_true(SCDArray_int_push_back(&arr, &(int){10}) == SCUFCONT_SUCCESS);
- assert_true(arr.data[0] == 7);
- assert_true(arr.data[1] == 10);
- SCDArray_int_free(&arr);
- }
- void test_DArray_at(void** state) {
- (void) state;
- SCDArray_int arr;
- SCDArray_int_alloc(&arr);
- assert_true(SCDArray_int_push_back(&arr, &(int){7}) == SCUFCONT_SUCCESS);
- assert_int_equal(*SCDArray_int_at(&arr, 0), 7);
- assert_true(SCDArray_int_push_back(&arr, &(int){10}) == SCUFCONT_SUCCESS);
- assert_int_equal(*SCDArray_int_at(&arr, 0), 7);
- assert_int_equal(*SCDArray_int_at(&arr, 1), 10);
- SCDArray_int_free(&arr);
- }
- void test_DArray_push_back_multiple(void** state) {
- (void) state;
- SCDArray_int arr;
- SCDArray_int_alloc(&arr);
- int nums[] = { 1, 2, 3, 4, 5 };
- const size_t nums_len = sizeof(nums) / sizeof(nums[0]);
- assert_true(SCDArray_int_push_back_multiple(&arr, nums, sizeof(nums) / sizeof(nums[0])) == SCUFCONT_SUCCESS);
- for (size_t i = 0; i < arr.len; i++) {
- assert_int_equal(*SCDArray_int_at(&arr, i), nums[i]);
- }
- int nums2[] = { 6, 7, 8 };
- const size_t nums2_len = sizeof(nums2) / sizeof(nums2[0]);
- assert_true(SCDArray_int_push_back_multiple(&arr, nums2, sizeof(nums2) / sizeof(nums2[0])) == SCUFCONT_SUCCESS);
- for (size_t i = 0; i < nums_len; i++) {
- assert_int_equal(*SCDArray_int_at(&arr, i), nums[i]);
- }
- for (size_t i = 0; i < nums2_len; i++) {
- assert_int_equal(*SCDArray_int_at(&arr, i + nums_len), nums2[i]);
- }
- SCDArray_int_free(&arr);
- }
- void test_DArray_remove(void** state) {
- (void) state;
- SCDArray_int arr;
- SCDArray_int_alloc(&arr);
- int nums[] = { 1, 2, 3, 4, 5 };
- SCDArray_int_push_back_multiple(&arr, nums, sizeof(nums) / sizeof(nums[0]));
- for (size_t i = 0; i < arr.len; i++) {
- assert_int_equal(*SCDArray_int_at(&arr, i), nums[i]);
- }
- // Remove last
- {
- const size_t old_len = arr.len;
- SCDArray_int_remove(&arr, arr.len - 1);
- assert_uint_equal(arr.len, old_len - 1);
- int new_nums[] = { 1, 2, 3, 4 };
- assert_uint_equal(arr.len, sizeof(new_nums) / sizeof(new_nums[0]));
- for (size_t i = 0; i < arr.len; i++) {
- assert_int_equal(*SCDArray_int_at(&arr, i), new_nums[i]);
- }
- }
- // Remove from middle
- {
- const size_t old_len = arr.len;
- SCDArray_int_remove(&arr, 1);
- assert_uint_equal(arr.len, old_len - 1);
- int new_nums[] = { 1, 3, 4 };
- assert_uint_equal(arr.len, sizeof(new_nums) / sizeof(new_nums[0]));
- for (size_t i = 0; i < arr.len; i++) {
- assert_int_equal(*SCDArray_int_at(&arr, i), new_nums[i]);
- }
- }
- // Remove first
- {
- const size_t old_len = arr.len;
- SCDArray_int_remove(&arr, 0);
- assert_uint_equal(arr.len, old_len - 1);
- int new_nums[] = { 3, 4 };
- assert_uint_equal(arr.len, sizeof(new_nums) / sizeof(new_nums[0]));
- for (size_t i = 0; i < arr.len; i++) {
- assert_int_equal(*SCDArray_int_at(&arr, i), new_nums[i]);
- }
- }
- SCDArray_int_free(&arr);
- }
- int DArray_tests_run(void) {
- const struct CMUnitTest tests[] = {
- cmocka_unit_test(test_DArray_alloc),
- cmocka_unit_test(test_DArray_push_back),
- cmocka_unit_test(test_DArray_at),
- cmocka_unit_test(test_DArray_push_back_multiple),
- cmocka_unit_test(test_DArray_remove),
- };
- return cmocka_run_group_tests_name("DArray", tests, NULL, NULL);
- }
|