diff --git a/util_unit.c b/util_unit.c index 9c44035..a117ea0 100644 --- a/util_unit.c +++ b/util_unit.c @@ -1,75 +1,120 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* util_unit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: elagouch +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/24 14:35:57 by elagouch #+# #+# */ +/* Updated: 2026/01/24 14:38:20 by elagouch ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "util_unit.h" #include -int dummy(void) { return 1; } - -int main(void) { - t_unit_test *testlist = NULL; - - load_test(&testlist, "hi", &dummy); +int dummy(void) +{ + return (1); } -t_unit_test *getTestAt(t_unit_test *head, size_t target_idx) { - /* we loop over instead of shifting the pointer to make sure we don't skip - * unexisting tests and end up in unallocated/invalid memory */ - for (size_t j = 0; (j < target_idx) && head; j++, head = head->next) - ; - return head; +int main(void) +{ + t_unit_test *testlist; + + testlist = NULL; + load_test(&testlist, "hi", &dummy); } -size_t countTests(t_unit_test *head) { - size_t j = 0; - for (; head; j++, head = head->next) - ; - return j; +/* we loop over instead of shifting the pointer to make sure we don't skip +unexisting tests and end up in unallocated/invalid memory */ +t_unit_test *get_test_at(t_unit_test *head, size_t target_idx) +{ + size_t j; + + j = 0; + while ((j < target_idx) && head) + { + head = head->next; + j++; + } + return (head); +} + +size_t count_tests(t_unit_test *head) +{ + size_t j; + + j = 0; + while (head) + { + head = head->next; + j++; + } + return (j); } /** * @brief util function to get last test of the chain */ -t_unit_test *getLast(t_unit_test *head) { - for (; head; head = head->next) - ; - return head; +t_unit_test *get_last(t_unit_test *head) +{ + while (head->next) + head = head->next; + return (head); } /** * @brief util function to allocate a new test */ -t_unit_test *alloc_test(const char *title, int (*test_func)(void)) { - t_unit_test *p = malloc(sizeof(t_unit_test)); - p->title = ft_strdup(title); - p->func = test_func; - p->next = NULL; - return p; +t_unit_test *alloc_test(const char *title, int (*test_func)(void)) +{ + t_unit_test *p; + + p = malloc(sizeof(t_unit_test)); + p->title = ft_strdup(title); + p->func = test_func; + p->next = NULL; + return (p); } -size_t load_test(t_unit_test **head_ptr, const char *title, - int (*test_func)(void)) { - if (!head_ptr) - return -1; - if (!*head_ptr) { // initial - t_unit_test *p = alloc_test(title, test_func); - if (!p) - return -1; - *head_ptr = p; - return 0; - } +size_t load_test(t_unit_test **head_ptr, const char *title, + int (*test_func)(void)) +{ + t_unit_test *p; + t_unit_test *last; - t_unit_test *last = getLast(*head_ptr); - last->next = alloc_test(title, test_func); - if (!last->next) - return -1; - return 0; + if (!head_ptr) + return (-1); + if (!*head_ptr) + { + p = alloc_test(title, test_func); + if (!p) + return (-1); + *head_ptr = p; + return (0); + } + last = get_last(*head_ptr); + last->next = alloc_test(title, test_func); + if (!last->next) + return (-1); + return (0); } -void clear_tests(t_unit_test **head_ptr) { - for (t_unit_test *head = *head_ptr; head;) { - t_unit_test *next = head = head->next; - head->next = NULL; - free(head->title); - head->title = NULL; - head->func = NULL; - head = next; - } +void clear_tests(t_unit_test **head_ptr) +{ + t_unit_test *head; + t_unit_test *next; + + next = *head_ptr; + while (head) + { + head = *head_ptr; + next = head->next; + head->next = NULL; + free(head->title); + head->title = NULL; + head->func = NULL; + head = next; + } } diff --git a/util_unit.h b/util_unit.h index 27dca62..469a825 100644 --- a/util_unit.h +++ b/util_unit.h @@ -1,32 +1,45 @@ -#ifndef UTIL_UNIT_H -#define UTIL_UNIT_H +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* util_unit.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: elagouch +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/24 14:38:40 by elagouch #+# #+# */ +/* Updated: 2026/01/24 14:38:41 by elagouch ### ########.fr */ +/* */ +/* ************************************************************************** */ -#include "libft/libft.h" -#include -#include +#ifndef UTIL_UNIT_H +# define UTIL_UNIT_H + +# include "libft/libft.h" +# include +# include /** * @brief singular unit test def */ -typedef struct s_unit_test { - char *title; - int (*func)(void); - struct s_unit_test *next; -} t_unit_test; +typedef struct s_unit_test +{ + char *title; + int (*func)(void); + struct s_unit_test *next; +} t_unit_test; /** * @brief finds a test at index * * @return test or NULL */ -t_unit_test *get_test_at(t_unit_test *head, size_t target_idx); +t_unit_test *get_test_at(t_unit_test *head, size_t target_idx); /** * @brief count tests * * @return size_t test count */ -size_t count_tests(t_unit_test *head); +size_t count_tests(t_unit_test *head); /** * @brief adds a new test @@ -39,12 +52,12 @@ size_t count_tests(t_unit_test *head); * * @return -1 on error, 0 on success */ -size_t load_test(t_unit_test **head_ptr, const char *title, - int (*test_func)(void)); +size_t load_test(t_unit_test **head_ptr, const char *title, + int (*test_func)(void)); /** * @brief clears the tests memory */ -void clear_tests(t_unit_test **head_ptr); +void clear_tests(t_unit_test **head_ptr); #endif // !UTIL_UNIT_H