aboutsummaryrefslogtreecommitdiff
path: root/test/src/lst/test_ft_lstmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/lst/test_ft_lstmap.c')
-rw-r--r--test/src/lst/test_ft_lstmap.c68
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);
}