aboutsummaryrefslogtreecommitdiff
path: root/test/src/ht
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/ht')
-rw-r--r--test/src/ht/test_ft_htdelone.c68
-rw-r--r--test/src/ht/test_ft_htdelone_key.c0
-rw-r--r--test/src/ht/test_ft_htdestroy.c38
-rw-r--r--test/src/ht/test_ft_htdestroy_all.c0
-rw-r--r--test/src/ht/test_ft_htdestroy_key.c0
-rw-r--r--test/src/ht/test_ft_htget.c81
-rw-r--r--test/src/ht/test_ft_htset.c23
7 files changed, 199 insertions, 11 deletions
diff --git a/test/src/ht/test_ft_htdelone.c b/test/src/ht/test_ft_htdelone.c
index e69de29..3bc0922 100644
--- a/test/src/ht/test_ft_htdelone.c
+++ b/test/src/ht/test_ft_htdelone.c
@@ -0,0 +1,68 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* test_ft_htdelone.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/19 02:08:00 by cacharle #+# #+# */
+/* Updated: 2020/02/19 02:46:10 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libft_test.h"
+
+TEST_GROUP(ft_htdelone);
+
+TEST_SETUP(ft_htdelone)
+{}
+
+TEST_TEAR_DOWN(ft_htdelone)
+{}
+
+static void st_del(t_ftht_content *v)
+{
+ free(v->key);
+ free(v);
+}
+
+TEST(ft_htdelone, basic)
+{
+ t_ftht *ht = ft_htnew(3);
+
+ ft_htset(ht, "bonjour", "je", st_del);
+ ft_htset(ht, "a", "yay", st_del);
+ ft_htset(ht, "b", "aasdf", st_del);
+ ft_htset(ht, "c", "a", st_del);
+ ft_htset(ht, "d", "dd", st_del);
+
+ ft_htdelone(ht, "bonjour", st_del);
+ void *ptr = ft_htget(ht, "bonjour");
+ TEST_ASSERT_NULL(ptr);
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "a"));
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "b"));
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "c"));
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "d"));
+
+ ft_htdelone(ht, "a", st_del);
+ ptr = ft_htget(ht, "a");
+ TEST_ASSERT_NULL(ptr);
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "b"));
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "c"));
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "d"));
+
+ ft_htdelone(ht, "b", st_del);
+ ptr = ft_htget(ht, "b");
+ TEST_ASSERT_NULL(ptr);
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "c"));
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "d"));
+
+ ft_htdelone(ht, "c", st_del);
+ ptr = ft_htget(ht, "c");
+ TEST_ASSERT_NULL(ptr);
+ TEST_ASSERT_NOT_NULL(ft_htget(ht, "d"));
+
+ ft_htdelone(ht, "d", st_del);
+ ptr = ft_htget(ht, "d");
+ TEST_ASSERT_NULL(ptr);
+}
diff --git a/test/src/ht/test_ft_htdelone_key.c b/test/src/ht/test_ft_htdelone_key.c
deleted file mode 100644
index e69de29..0000000
--- a/test/src/ht/test_ft_htdelone_key.c
+++ /dev/null
diff --git a/test/src/ht/test_ft_htdestroy.c b/test/src/ht/test_ft_htdestroy.c
index e69de29..360a7a0 100644
--- a/test/src/ht/test_ft_htdestroy.c
+++ b/test/src/ht/test_ft_htdestroy.c
@@ -0,0 +1,38 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* test_ft_htdestroy.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/19 02:45:27 by cacharle #+# #+# */
+/* Updated: 2020/02/19 02:49:36 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libft_test.h"
+
+TEST_GROUP(ft_htdestroy);
+
+TEST_SETUP(ft_htdestroy)
+{}
+
+TEST_TEAR_DOWN(ft_htdestroy)
+{}
+
+static void st_del(t_ftht_content *v)
+{
+ free(v->key);
+ free(v);
+}
+
+TEST(ft_htdestroy, basic)
+{
+ t_ftht *ht = ft_htnew(2);
+
+ ft_htset(ht, "a", "1", st_del);
+ ft_htset(ht, "b", "2", st_del);
+ ft_htset(ht, "c", "3", st_del);
+ ft_htset(ht, "d", "4", st_del);
+ ft_htdestroy(ht, st_del);
+}
diff --git a/test/src/ht/test_ft_htdestroy_all.c b/test/src/ht/test_ft_htdestroy_all.c
deleted file mode 100644
index e69de29..0000000
--- a/test/src/ht/test_ft_htdestroy_all.c
+++ /dev/null
diff --git a/test/src/ht/test_ft_htdestroy_key.c b/test/src/ht/test_ft_htdestroy_key.c
deleted file mode 100644
index e69de29..0000000
--- a/test/src/ht/test_ft_htdestroy_key.c
+++ /dev/null
diff --git a/test/src/ht/test_ft_htget.c b/test/src/ht/test_ft_htget.c
index 591d492..5db06b7 100644
--- a/test/src/ht/test_ft_htget.c
+++ b/test/src/ht/test_ft_htget.c
@@ -16,9 +16,14 @@ TEST_TEAR_DOWN(ft_htget)
int helper_segfault_pid;
+static void st_del(t_ftht_content *c)
+{
+ free(c->key);
+ free(c);
+}
+
TEST(ft_htget, segfault)
{
- TEST_IGNORE();
TEST_ASSERT_SEGFAULT(ft_htget((t_ftht*)NULL, ""));
TEST_ASSERT_SEGFAULT(ft_htget(ft_htnew(1), (char*)NULL));
TEST_ASSERT_SEGFAULT(ft_htget(ft_htnew(1), ""));
@@ -27,11 +32,83 @@ TEST(ft_htget, segfault)
TEST(ft_htget, error_null)
{
- TEST_IGNORE();
TEST_ASSERT_NULL(ft_htget(NULL, NULL));
TEST_ASSERT_NULL(ft_htget(ht, NULL));
TEST_ASSERT_NULL(ft_htget(NULL, ""));
TEST_ASSERT_NULL(ft_htget(ht, ""));
TEST_ASSERT_NULL(ft_htget(ht, "hi"));
TEST_ASSERT_NULL(ft_htget(ht, "asdfkasdflk"));
+ TEST_ASSERT_NULL(ft_htget(ht, "asdhfalsdhflahsdfhjasklehjfklwhjekrlanklshasdfkasdflk"));
+}
+
+TEST(ft_htget, basic)
+{
+ ft_htset(ht, strdup("a"), strdup("data1"), st_del);
+ ft_htset(ht, strdup("b"), strdup("data2"), st_del);
+ ft_htset(ht, strdup("c"), strdup("data3"), st_del);
+
+ char *s = ft_htget(ht, "a");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "data1");
+
+ s = ft_htget(ht, "b");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "data2");
+
+ s = ft_htget(ht, "c");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "data3");
+
+ ft_htset(ht, strdup("a"), strdup("bonjour1"), st_del);
+ ft_htset(ht, strdup("b"), strdup("bonjour2"), st_del);
+ ft_htset(ht, strdup("c"), strdup("bonjour3"), st_del);
+
+ s = ft_htget(ht, "a");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "bonjour1");
+
+ s = ft_htget(ht, "b");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "bonjour2");
+
+ s = ft_htget(ht, "c");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "bonjour3");
+}
+
+TEST(ft_htget, collision)
+{
+ t_ftht *small = ft_htnew(1);
+
+ ft_htset(small, strdup("a"), strdup("data1"), st_del);
+ ft_htset(small, strdup("b"), strdup("data2"), st_del);
+ ft_htset(small, strdup("c"), strdup("data3"), st_del);
+
+ char *s = ft_htget(small, "a");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "data1");
+
+ s = ft_htget(small, "b");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "data2");
+
+ s = ft_htget(small, "c");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "data3");
+
+ ft_htset(small, strdup("a"), strdup("bonjour1"), st_del);
+ ft_htset(small, strdup("b"), strdup("bonjour2"), st_del);
+ ft_htset(small, strdup("c"), strdup("bonjour3"), st_del);
+
+ s = ft_htget(small, "a");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "bonjour1");
+
+ s = ft_htget(small, "b");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "bonjour2");
+
+ s = ft_htget(small, "c");
+ TEST_ASSERT_NOT_NULL(s);
+ TEST_ASSERT_EQUAL_STRING(s, "bonjour3");
}
diff --git a/test/src/ht/test_ft_htset.c b/test/src/ht/test_ft_htset.c
index c4b53b9..f161206 100644
--- a/test/src/ht/test_ft_htset.c
+++ b/test/src/ht/test_ft_htset.c
@@ -11,7 +11,13 @@ TEST_SETUP(ft_htset)
TEST_TEAR_DOWN(ft_htset)
{
- ft_htdestroy_key(ht);
+ /* ft_htdestroy_key(ht); */
+}
+
+static void st_del(t_ftht_content *c)
+{
+ free(c->key);
+ free(c);
}
TEST(ft_htset, segfault)
@@ -51,20 +57,19 @@ TEST(ft_htset, reset)
small = ft_htnew(3);
- t_ftht_content *content = ft_htset(ht, "bonjour", strdup("content"), free);
+ t_ftht_content *content = ft_htset(small, "bonjour", ft_strdup("content"), st_del);
TEST_ASSERT_NOT_NULL(content);
TEST_ASSERT_NOT_NULL(content->key);
TEST_ASSERT_NOT_NULL(content->value);
TEST_ASSERT_EQUAL_STRING(content->key, "bonjour");
TEST_ASSERT_EQUAL_STRING(content->value, "content");
- t_ftht_content *content_re = ft_htset(ht, "bonjour", strdup("yo"), free);
+ t_ftht_content *content_re = ft_htset(small, "bonjour", ft_strdup("yo"), st_del);
TEST_ASSERT_NOT_NULL(content_re);
- TEST_ASSERT_EQUAL_PTR(content, content_re);
TEST_ASSERT_NOT_NULL(content_re->key);
TEST_ASSERT_NOT_NULL(content_re->value);
- TEST_ASSERT_EQUAL_STRING(content_re->key, "bonjour");
- TEST_ASSERT_EQUAL_STRING(content_re->value, "yo");
+ TEST_ASSERT_EQUAL_STRING("bonjour", content_re->key);
+ TEST_ASSERT_EQUAL_STRING("yo", content_re->value);
}
TEST(ft_htset, collision)
@@ -72,21 +77,21 @@ TEST(ft_htset, collision)
t_ftht *small = NULL;
small = ft_htnew(1);
- t_ftht_content *content1 = ft_htset(ht, "bonjour", strdup("content1"), free);
+ t_ftht_content *content1 = ft_htset(ht, "bonjour", strdup("content1"), st_del);
TEST_ASSERT_NOT_NULL(content1);
TEST_ASSERT_NOT_NULL(content1->key);
TEST_ASSERT_NOT_NULL(content1->value);
TEST_ASSERT_EQUAL_STRING(content1->key, "bonjour");
TEST_ASSERT_EQUAL_STRING(content1->value, "content1");
- t_ftht_content *content2 = ft_htset(ht, "aurevoir", strdup("content2"), free);
+ t_ftht_content *content2 = ft_htset(ht, "aurevoir", strdup("content2"), st_del);
TEST_ASSERT_NOT_NULL(content2);
TEST_ASSERT_NOT_NULL(content2->key);
TEST_ASSERT_NOT_NULL(content2->value);
TEST_ASSERT_EQUAL_STRING(content2->key, "aurevoir");
TEST_ASSERT_EQUAL_STRING(content2->value, "content2");
- t_ftht_content *content3 = ft_htset(ht, "aloa", strdup("content3"), free);
+ t_ftht_content *content3 = ft_htset(ht, "aloa", strdup("content3"), st_del);
TEST_ASSERT_NOT_NULL(content3);
TEST_ASSERT_NOT_NULL(content3->key);
TEST_ASSERT_NOT_NULL(content3->value);