diff --git a/srcs/lst/ft_lstrm.c b/srcs/lst/ft_lstrm.c deleted file mode 100644 index f129f75..0000000 --- a/srcs/lst/ft_lstrm.c +++ /dev/null @@ -1,24 +0,0 @@ -#include "libft.h" - -void ft_lstrm(t_list **lst, void *data, int (*cmp)(void *, void *), void (*del)(void *)) -{ - t_list *curr = *lst; - t_list *prev = NULL; - - while (curr) - { - if (cmp(curr->data, data) == 0) - { - if (prev) - prev->next = curr->next; - else - *lst = curr->next; - if (del) - del(curr->data); - free(curr); - return; - } - prev = curr; - curr = curr->next; - } -} \ No newline at end of file diff --git a/tests/lst.c b/tests/lst.c deleted file mode 100644 index bb666a0..0000000 --- a/tests/lst.c +++ /dev/null @@ -1,182 +0,0 @@ -#include "test.h" -#include "libft.h" -#include -#include - -/* Helper for comparing ints stored as void* */ -static int cmp_int(void *a, void *b) { - return (*(int*)a != *(int*)b); -} - -/* Helper for freeing ints stored as void* (no-op here, but for completeness) */ -static void del_int(void *a) { - (void)a; -} - -/* Helper for iterating: increments the int value */ -static void inc_int(void *a) { - (*(int*)a)++; -} - -/* ---- TESTS ---- */ - -TEST(test_lstnew) { - int x = 42; - t_list *node = ft_lstnew(&x); - ASSERT(node != NULL); - ASSERT(node->data == &x); - ASSERT(node->next == NULL); - free(node); -} - -TEST(test_lstpush_and_size) { - int a = 1, b = 2, c = 3; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); - ft_lstpush(&lst, ft_lstnew(&b)); - ft_lstpush(&lst, ft_lstnew(&c)); - ASSERT(ft_lstsize(lst) == 3); - ft_lstclear(&lst); -} - -TEST(test_lstunshift) { - int a = 1, b = 2; - t_list *lst = NULL; - ft_lstunshift(&lst, ft_lstnew(&a)); - ft_lstunshift(&lst, ft_lstnew(&b)); // b should be at head - ASSERT(lst && lst->data == &b); - ft_lstclear(&lst); -} - -TEST(test_lstpop) { - int a = 1, b = 2; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); - ft_lstpush(&lst, ft_lstnew(&b)); - t_list *node = ft_lstpop(&lst); - ASSERT(node && node->data == &b); - free(node); - ASSERT(ft_lstsize(lst) == 1); - ft_lstclear(&lst); -} - -TEST(test_lstshift) { - int a = 1, b = 2; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); - ft_lstpush(&lst, ft_lstnew(&b)); - t_list *node = ft_lstshift(&lst); - ASSERT(node && node->data == &a); - free(node); - ASSERT(ft_lstsize(lst) == 1); - ft_lstclear(&lst); -} - -TEST(test_lstclear) { - int a = 1, b = 2; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); - ft_lstpush(&lst, ft_lstnew(&b)); - ft_lstclear(&lst); - ASSERT(lst == NULL); -} - -TEST(test_lstreverse) { - int a = 1, b = 2, c = 3; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); - ft_lstpush(&lst, ft_lstnew(&b)); - ft_lstpush(&lst, ft_lstnew(&c)); // c->b->a - ft_lstreverse(&lst); // should be a->b->c - ASSERT(lst && *(int*)lst->data == 1); - ASSERT(lst->next && *(int*)lst->next->data == 2); - ASSERT(lst->next->next && *(int*)lst->next->next->data == 3); - ft_lstclear(&lst); -} - -TEST(test_lstempty) { - t_list *lst = NULL; - ASSERT(ft_lstempty(lst) == 1); - int x = 42; - lst = ft_lstnew(&x); - ASSERT(ft_lstempty(lst) == 0); - ft_lstclear(&lst); -} - -TEST(test_lstiter) { - int a = 1, b = 2, c = 3; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); - ft_lstpush(&lst, ft_lstnew(&b)); - ft_lstpush(&lst, ft_lstnew(&c)); - ft_lstiter(lst, inc_int); - ASSERT(a == 2 && b == 3 && c == 4); - ft_lstclear(&lst); -} - -TEST(test_lstrm) { - int a = 1, b = 2, c = 3; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); - ft_lstpush(&lst, ft_lstnew(&b)); - ft_lstpush(&lst, ft_lstnew(&c)); // c->b->a - ft_lstrm(&lst, &b, cmp_int, del_int); // remove b - ASSERT(ft_lstsize(lst) == 2); - ASSERT(ft_lstfind(lst, &b, cmp_int) == NULL); - ft_lstclear(&lst); -} - -TEST(test_lstfind) { - int a = 1, b = 2; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); - ft_lstpush(&lst, ft_lstnew(&b)); - t_list *found = ft_lstfind(lst, &b, cmp_int); - ASSERT(found && found->data == &b); - ft_lstclear(&lst); -} - -TEST(test_lstinsert) { - int a = 1, b = 2, c = 3; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); // a - ft_lstinsert(&lst, ft_lstnew(&b), 1); // a->b - ft_lstinsert(&lst, ft_lstnew(&c), 1); // a->c->b - ASSERT(ft_lstsize(lst) == 3); - ASSERT(*(int*)ft_lstget(lst, 0)->data == 1); - ASSERT(*(int*)ft_lstget(lst, 1)->data == 3); - ASSERT(*(int*)ft_lstget(lst, 2)->data == 2); - ft_lstclear(&lst); -} - -TEST(test_lstget) { - int a = 1, b = 2, c = 3; - t_list *lst = NULL; - ft_lstpush(&lst, ft_lstnew(&a)); - ft_lstpush(&lst, ft_lstnew(&b)); - ft_lstpush(&lst, ft_lstnew(&c)); // c->b->a - ASSERT(*(int*)ft_lstget(lst, 0)->data == 3); - ASSERT(*(int*)ft_lstget(lst, 1)->data == 2); - ASSERT(*(int*)ft_lstget(lst, 2)->data == 1); - ASSERT(ft_lstget(lst, 3) == NULL); - ft_lstclear(&lst); -} - -/* ---- MAIN ---- */ - -int main(void) { - RUN_TEST(test_lstnew); - RUN_TEST(test_lstpush_and_size); - RUN_TEST(test_lstunshift); - RUN_TEST(test_lstpop); - RUN_TEST(test_lstshift); - RUN_TEST(test_lstclear); - RUN_TEST(test_lstreverse); - RUN_TEST(test_lstempty); - RUN_TEST(test_lstiter); - RUN_TEST(test_lstrm); - RUN_TEST(test_lstfind); - RUN_TEST(test_lstinsert); - RUN_TEST(test_lstget); - return 0; -}