diff options
Diffstat (limited to 'test/src/lst/test_ft_lstmap.c')
| -rw-r--r-- | test/src/lst/test_ft_lstmap.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/test/src/lst/test_ft_lstmap.c b/test/src/lst/test_ft_lstmap.c index 5252e9e..4abdddc 100644 --- a/test/src/lst/test_ft_lstmap.c +++ b/test/src/lst/test_ft_lstmap.c @@ -8,7 +8,75 @@ TEST_SETUP(ft_lstmap) TEST_TEAR_DOWN(ft_lstmap) {} +static void *f_square(void *data) +{ + int *d = malloc(sizeof(int)); + + *d = *(int*)data; + *d = *d * *d; + return d; +} + TEST(ft_lstmap, basic) { + t_ftlst *lst = NULL; + t_ftlst *mapped = NULL; + int a = 2; + int b = 3; + int c = 4; + int d = 5; + + mapped = ft_lstmap(lst, f_square, free); + TEST_ASSERT_NULL(mapped); + + ft_lstadd_front(&lst, ft_lstnew(&a)); + mapped = ft_lstmap(lst, f_square, free); + TEST_ASSERT_NOT_NULL(mapped); + TEST_ASSERT_NOT_NULL(mapped->content); + TEST_ASSERT_EQUAL(4, *(int*)mapped->content); + TEST_ASSERT_NULL(mapped->next); + ft_lstclear(&mapped, free); + + ft_lstadd_front(&lst, ft_lstnew(&b)); + mapped = ft_lstmap(lst, f_square, free); + TEST_ASSERT_NOT_NULL(mapped); + TEST_ASSERT_NOT_NULL(mapped->content); + TEST_ASSERT_EQUAL(9, *(int*)mapped->content); + TEST_ASSERT_NOT_NULL(mapped->next); + TEST_ASSERT_NOT_NULL(mapped->next->content); + TEST_ASSERT_EQUAL(4, *(int*)mapped->next->content); + TEST_ASSERT_NULL(mapped->next->next); + ft_lstclear(&mapped, free); + + ft_lstadd_front(&lst, ft_lstnew(&c)); + mapped = ft_lstmap(lst, f_square, free); + TEST_ASSERT_NOT_NULL(mapped); + TEST_ASSERT_NOT_NULL(mapped->content); + TEST_ASSERT_EQUAL(16, *(int*)mapped->content); + TEST_ASSERT_NOT_NULL(mapped->next); + TEST_ASSERT_NOT_NULL(mapped->next->content); + TEST_ASSERT_EQUAL(9, *(int*)mapped->next->content); + TEST_ASSERT_NOT_NULL(mapped->next->next); + TEST_ASSERT_NOT_NULL(mapped->next->next->content); + TEST_ASSERT_EQUAL(4, *(int*)mapped->next->next->content); + TEST_ASSERT_NULL(mapped->next->next->next); + ft_lstclear(&mapped, free); + + ft_lstadd_front(&lst, ft_lstnew(&d)); + mapped = ft_lstmap(lst, f_square, free); + TEST_ASSERT_NOT_NULL(mapped); + TEST_ASSERT_NOT_NULL(mapped->content); + TEST_ASSERT_EQUAL(25, *(int*)mapped->content); + TEST_ASSERT_NOT_NULL(mapped->next); + TEST_ASSERT_NOT_NULL(mapped->next->content); + TEST_ASSERT_EQUAL(16, *(int*)mapped->next->content); + TEST_ASSERT_NOT_NULL(mapped->next->next); + TEST_ASSERT_NOT_NULL(mapped->next->next->content); + TEST_ASSERT_EQUAL(9, *(int*)mapped->next->next->content); + TEST_ASSERT_NOT_NULL(mapped->next->next->next); + TEST_ASSERT_NOT_NULL(mapped->next->next->next->content); + TEST_ASSERT_EQUAL(4, *(int*)mapped->next->next->next->content); + ft_lstclear(&mapped, free); + ft_lstclear(&lst, NULL); } |
