style: update formatting and alignment in dynamic array files
All checks were successful
CI / build (push) Successful in 10m53s

This commit is contained in:
2026-04-16 11:06:06 -03:00
parent a8cd5fb7a8
commit 4238d73749
3 changed files with 49 additions and 81 deletions

View File

@@ -6,7 +6,7 @@ UseTab: Never
ColumnLimit: 100 ColumnLimit: 100
BreakBeforeBraces: Allman BreakBeforeBraces: Attach
AllowShortIfStatementsOnASingleLine: false AllowShortIfStatementsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None AllowShortFunctionsOnASingleLine: None
@@ -19,4 +19,4 @@ SortIncludes: true
IndentCaseLabels: true IndentCaseLabels: true
AlignEscapedNewlines: Left AlignEscapedNewlines: Right

View File

@@ -4,7 +4,9 @@
#define DYNAMIC_ARRAY_VERSION_MAJOR 0 #define DYNAMIC_ARRAY_VERSION_MAJOR 0
#define DYNAMIC_ARRAY_VERSION_MINOR 1 #define DYNAMIC_ARRAY_VERSION_MINOR 1
#define DYNAMIC_ARRAY_VERSION_BUILD 0 #define DYNAMIC_ARRAY_VERSION_BUILD 0
#define DYNAMIC_ARRAY_VERSION ((DYNAMIC_ARRAY_VERSION_MAJOR << 16) | (DYNAMIC_ARRAY_VERSION_MINOR << 8) | DYNAMIC_ARRAY_VERSION_BUILD) #define DYNAMIC_ARRAY_VERSION \
((DYNAMIC_ARRAY_VERSION_MAJOR << 16) | (DYNAMIC_ARRAY_VERSION_MINOR << 8) | \
DYNAMIC_ARRAY_VERSION_BUILD)
#include <stddef.h> #include <stddef.h>
#include <stdlib.h> #include <stdlib.h>
@@ -12,8 +14,6 @@
#define DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE 10 #define DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE 10
#define DYNAMIC_ARRAY_CAPACITY_FACTOR 2 #define DYNAMIC_ARRAY_CAPACITY_FACTOR 2
// [ HEADER | ARRAY ELEMENTS ] // [ HEADER | ARRAY ELEMENTS ]
// ↑ // ↑
// THIS IS THE POINTER RETURNED BY ALL MACROS // THIS IS THE POINTER RETURNED BY ALL MACROS
@@ -22,25 +22,20 @@ typedef struct {
size_t capacity; size_t capacity;
} ArrayHeader; } ArrayHeader;
#define array_create(arr) \ #define array_create(arr) \
do { \ do { \
ArrayHeader *header = malloc( \ ArrayHeader* header = \
sizeof(*(arr)) * DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE + sizeof(ArrayHeader) \ malloc(sizeof(*(arr)) * DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE + sizeof(ArrayHeader)); \
); \
if (header == NULL) { \ if (header == NULL) { \
abort(); \ abort(); \
} \ } \
header->size = 0; \ header->size = 0; \
header->capacity = DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE; \ header->capacity = DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE; \
\ \
(arr) = (void *)(header + 1); \ (arr) = (void*)(header + 1); \
} while(0) } while (0)
#define array_get_header(arr) \
((arr) ? ((ArrayHeader*)(arr) - 1) : NULL)
#define array_get_header(arr) ((arr) ? ((ArrayHeader*)(arr) - 1) : NULL)
#define array_destroy(arr) \ #define array_destroy(arr) \
do { \ do { \
@@ -51,47 +46,41 @@ typedef struct {
(arr) = NULL; \ (arr) = NULL; \
} while (0) } while (0)
#define array_push_value(arr, value) \ #define array_push_value(arr, value) \
do { \ do { \
if ((arr) == NULL) { \ if ((arr) == NULL) { \
array_create(arr); \ array_create(arr); \
} \ } \
ArrayHeader *header = array_get_header(arr); \ ArrayHeader* header = array_get_header(arr); \
if (header->size >= header->capacity) { \ if (header->size >= header->capacity) { \
size_t new_capacity = header->capacity * DYNAMIC_ARRAY_CAPACITY_FACTOR; \ size_t new_capacity = header->capacity * DYNAMIC_ARRAY_CAPACITY_FACTOR; \
ArrayHeader *new_header = realloc( \ ArrayHeader* new_header = \
header, sizeof(*(arr)) * new_capacity + sizeof(ArrayHeader) \ realloc(header, sizeof(*(arr)) * new_capacity + sizeof(ArrayHeader)); \
); \
if (new_header == NULL) { \ if (new_header == NULL) { \
abort(); \ abort(); \
} \ } \
header = new_header; \ header = new_header; \
header->capacity = new_capacity; \ header->capacity = new_capacity; \
(arr) = (void *)(header + 1); \ (arr) = (void*)(header + 1); \
} \ } \
(arr)[header->size] = (value); \ (arr)[header->size] = (value); \
header->size++; \ header->size++; \
} while (0) } while (0)
#define array_pop(arr) \ #define array_pop(arr) \
do { \ do { \
if ((arr) == NULL) { \ if ((arr) == NULL) { \
break; \ break; \
} \ } \
ArrayHeader *header = array_get_header(arr); \ ArrayHeader* header = array_get_header(arr); \
if (header->size == 0) { \ if (header->size == 0) { \
break; \ break; \
} \ } \
header->size--; \ header->size--; \
} while (0) } while (0)
#define array_size(arr) ((arr) ? array_get_header(arr)->size : 0)
#define array_size(arr) \ #define array_capacity(arr) ((arr) ? array_get_header(arr)->capacity : 0)
((arr) ? array_get_header(arr)->size : 0)
#define array_capacity(arr) \
((arr) ? array_get_header(arr)->capacity : 0)
#endif #endif

View File

@@ -2,33 +2,31 @@
#include "dynamic_array.h" #include "dynamic_array.h"
void setUp(void) {
}
void setUp(void) {} void tearDown(void) {
}
void tearDown(void) {}
void test_array_create_without_options(void) { void test_array_create_without_options(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
const ArrayHeader *header = array_get_header(arr); const ArrayHeader* header = array_get_header(arr);
TEST_ASSERT_EQUAL(DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE, header->capacity); TEST_ASSERT_EQUAL(DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE, header->capacity);
array_destroy(arr); array_destroy(arr);
} }
void test_array_destroy(void) { void test_array_destroy(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
array_destroy(arr); array_destroy(arr);
TEST_ASSERT_NULL(arr); TEST_ASSERT_NULL(arr);
} }
void test_array_size_initial(void) { void test_array_size_initial(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
TEST_ASSERT_EQUAL(0, array_get_header(arr)->size); TEST_ASSERT_EQUAL(0, array_get_header(arr)->size);
@@ -36,9 +34,8 @@ void test_array_size_initial(void) {
array_destroy(arr); array_destroy(arr);
} }
void test_array_push_value(void) { void test_array_push_value(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
array_push_value(arr, 42); array_push_value(arr, 42);
@@ -49,9 +46,8 @@ void test_array_push_value(void) {
array_destroy(arr); array_destroy(arr);
} }
void test_array_push_multiple_values(void) { void test_array_push_multiple_values(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
array_push_value(arr, 10); array_push_value(arr, 10);
@@ -66,9 +62,8 @@ void test_array_push_multiple_values(void) {
array_destroy(arr); array_destroy(arr);
} }
void test_array_pop_decrements_size(void) { void test_array_pop_decrements_size(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
array_push_value(arr, 42); array_push_value(arr, 42);
@@ -80,9 +75,8 @@ void test_array_pop_decrements_size(void) {
array_destroy(arr); array_destroy(arr);
} }
void test_array_pop_on_empty_is_noop(void) { void test_array_pop_on_empty_is_noop(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
array_push_value(arr, 99); array_push_value(arr, 99);
@@ -98,9 +92,8 @@ void test_array_pop_on_empty_is_noop(void) {
array_destroy(arr); array_destroy(arr);
} }
void test_array_get_capacity_default(void) { void test_array_get_capacity_default(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
TEST_ASSERT_EQUAL(DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE, array_get_header(arr)->capacity); TEST_ASSERT_EQUAL(DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE, array_get_header(arr)->capacity);
@@ -108,25 +101,23 @@ void test_array_get_capacity_default(void) {
array_destroy(arr); array_destroy(arr);
} }
void test_array_size_capacity_relationship(void) { void test_array_size_capacity_relationship(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
array_push_value(arr, 1); array_push_value(arr, 1);
array_push_value(arr, 2); array_push_value(arr, 2);
array_push_value(arr, 3); array_push_value(arr, 3);
const ArrayHeader *header = array_get_header(arr); const ArrayHeader* header = array_get_header(arr);
TEST_ASSERT_EQUAL(3, header->size); TEST_ASSERT_EQUAL(3, header->size);
TEST_ASSERT_LESS_OR_EQUAL(header->capacity, header->size); TEST_ASSERT_LESS_OR_EQUAL(header->capacity, header->size);
array_destroy(arr); array_destroy(arr);
} }
void test_array_push_beyond_capacity(void) { void test_array_push_beyond_capacity(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
const int num_elements = DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE * 2; const int num_elements = DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE * 2;
@@ -134,16 +125,15 @@ void test_array_push_beyond_capacity(void) {
array_push_value(arr, i); array_push_value(arr, i);
} }
const ArrayHeader *header = array_get_header(arr); const ArrayHeader* header = array_get_header(arr);
TEST_ASSERT_EQUAL(num_elements, header->size); TEST_ASSERT_EQUAL(num_elements, header->size);
TEST_ASSERT_GREATER_THAN(DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE, header->capacity); TEST_ASSERT_GREATER_THAN(DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE, header->capacity);
array_destroy(arr); array_destroy(arr);
} }
void test_array_values_correct_after_growth(void) { void test_array_values_correct_after_growth(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
const int num_elements = 1000; const int num_elements = 1000;
@@ -159,9 +149,8 @@ void test_array_values_correct_after_growth(void) {
array_destroy(arr); array_destroy(arr);
} }
void test_array_looping(void) { void test_array_looping(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
const int num_elements = DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE * 2; const int num_elements = DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE * 2;
@@ -169,7 +158,7 @@ void test_array_looping(void) {
array_push_value(arr, i); array_push_value(arr, i);
} }
const ArrayHeader *header = array_get_header(arr); const ArrayHeader* header = array_get_header(arr);
TEST_ASSERT_EQUAL(num_elements, header->size); TEST_ASSERT_EQUAL(num_elements, header->size);
for (int i = 0; i < header->size; i++) { for (int i = 0; i < header->size; i++) {
@@ -177,25 +166,22 @@ void test_array_looping(void) {
} }
} }
/* --- array_get_header branch: NULL arr → returns NULL --- */ /* --- array_get_header branch: NULL arr → returns NULL --- */
void test_array_get_header_on_null_returns_null(void) { void test_array_get_header_on_null_returns_null(void) {
int *arr = NULL; int* arr = NULL;
TEST_ASSERT_NULL(array_get_header(arr)); TEST_ASSERT_NULL(array_get_header(arr));
} }
/* --- array_destroy branch: NULL arr → no-op, does not crash --- */ /* --- array_destroy branch: NULL arr → no-op, does not crash --- */
void test_array_destroy_on_null_is_noop(void) { void test_array_destroy_on_null_is_noop(void) {
int *arr = NULL; int* arr = NULL;
array_destroy(arr); array_destroy(arr);
TEST_ASSERT_NULL(arr); TEST_ASSERT_NULL(arr);
} }
/* --- array_push_value branch: NULL arr → auto-creates the array --- */ /* --- array_push_value branch: NULL arr → auto-creates the array --- */
void test_array_push_value_on_null_auto_creates(void) { void test_array_push_value_on_null_auto_creates(void) {
int *arr = NULL; int* arr = NULL;
array_push_value(arr, 7); array_push_value(arr, 7);
TEST_ASSERT_NOT_NULL(arr); TEST_ASSERT_NOT_NULL(arr);
TEST_ASSERT_EQUAL(7, arr[0]); TEST_ASSERT_EQUAL(7, arr[0]);
@@ -203,25 +189,22 @@ void test_array_push_value_on_null_auto_creates(void) {
array_destroy(arr); array_destroy(arr);
} }
/* --- array_pop branch: NULL arr → no-op, does not crash --- */ /* --- array_pop branch: NULL arr → no-op, does not crash --- */
void test_array_pop_on_null_is_noop(void) { void test_array_pop_on_null_is_noop(void) {
int *arr = NULL; int* arr = NULL;
array_pop(arr); array_pop(arr);
TEST_ASSERT_NULL(arr); TEST_ASSERT_NULL(arr);
} }
/* --- array_size branch: NULL arr → 0 --- */ /* --- array_size branch: NULL arr → 0 --- */
void test_array_size_on_null_returns_zero(void) { void test_array_size_on_null_returns_zero(void) {
int *arr = NULL; int* arr = NULL;
TEST_ASSERT_EQUAL(0, array_size(arr)); TEST_ASSERT_EQUAL(0, array_size(arr));
} }
/* --- array_size branch: non-NULL arr → current size --- */ /* --- array_size branch: non-NULL arr → current size --- */
void test_array_size_returns_current_size(void) { void test_array_size_returns_current_size(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
array_push_value(arr, 1); array_push_value(arr, 1);
array_push_value(arr, 2); array_push_value(arr, 2);
@@ -229,25 +212,21 @@ void test_array_size_returns_current_size(void) {
array_destroy(arr); array_destroy(arr);
} }
/* --- array_capacity branch: NULL arr → 0 --- */ /* --- array_capacity branch: NULL arr → 0 --- */
void test_array_capacity_on_null_returns_zero(void) { void test_array_capacity_on_null_returns_zero(void) {
int *arr = NULL; int* arr = NULL;
TEST_ASSERT_EQUAL(0, array_capacity(arr)); TEST_ASSERT_EQUAL(0, array_capacity(arr));
} }
/* --- array_capacity branch: non-NULL arr → current capacity --- */ /* --- array_capacity branch: non-NULL arr → current capacity --- */
void test_array_capacity_returns_current_capacity(void) { void test_array_capacity_returns_current_capacity(void) {
int *arr = NULL; int* arr = NULL;
array_create(arr); array_create(arr);
TEST_ASSERT_EQUAL(DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE, array_capacity(arr)); TEST_ASSERT_EQUAL(DYNAMIC_ARRAY_DEFAULT_ARRAY_SIZE, array_capacity(arr));
array_destroy(arr); array_destroy(arr);
} }
int main(void) {
int main(void)
{
UNITY_BEGIN(); UNITY_BEGIN();
RUN_TEST(test_array_create_without_options); RUN_TEST(test_array_create_without_options);