aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ft_strcmp_test.c73
-rw-r--r--ft_strcpy_test.c53
-rw-r--r--ft_strlen_test.c3
-rw-r--r--libasm_test.h40
4 files changed, 143 insertions, 26 deletions
diff --git a/ft_strcmp_test.c b/ft_strcmp_test.c
index 8ac0c2d..f0ec048 100644
--- a/ft_strcmp_test.c
+++ b/ft_strcmp_test.c
@@ -1,7 +1,80 @@
#include "libasm_test.h"
+static void
+ft_strcmp_test_segfault(void)
+{
+ TEST_ASM_FUNCTION(ft_strcmp("", ""));
+ TEST_ASM_FUNCTION(ft_strcmp("bon", "bon"));
+ TEST_ASM_FUNCTION(ft_strcmp("bonjour", "bonjour"));
+ TEST_ASM_FUNCTION(ft_strcmp("%c%s%p%x%X%e%f%g", "%c%s%p%x%X%e%f%g"));
+ TEST_ASM_FUNCTION(ft_strcmp("the\0hidden", "the\0hidden"));
+ TEST_ASM_FUNCTION(ft_strcmp("Lorem ipsum dolor sit amet, consectetur adipiscing\
+elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
+bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
+volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
+felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
+ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
+tortor, sit amet consequat amet.",
+"Lorem ipsum dolor sit amet, consectetur adipiscing\
+elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
+bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
+volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
+felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
+ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
+tortor, sit amet consequat amet."));
+}
+
+#define FT_STRCMP_EXPECT(s1, s2) expect_int(strcmp(s1, s2), ft_strcmp(s1, s2))
+
+static void
+ft_strcmp_test_compare(void)
+{
+ FT_STRCMP_EXPECT("", "");
+ FT_STRCMP_EXPECT("bon", "");
+ FT_STRCMP_EXPECT("bonjour", "");
+ FT_STRCMP_EXPECT("%c%s%p%x%X%e%f%g", "");
+ FT_STRCMP_EXPECT("the\0hidden", "");
+ FT_STRCMP_EXPECT("Lorem ipsum dolor sit amet, consectetur adipiscing\
+elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
+bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
+volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
+felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
+ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
+tortor, sit amet consequat amet.", "");
+ FT_STRCMP_EXPECT("", "");
+ FT_STRCMP_EXPECT("bon", "bon");
+ FT_STRCMP_EXPECT("bonjour", "bonjour");
+ FT_STRCMP_EXPECT("%c%s%p%x%X%e%f%g", "%c%s%p%x%X%e%f%g");
+ FT_STRCMP_EXPECT("the\0hidden", "the\0hidden");
+ FT_STRCMP_EXPECT("Lorem ipsum dolor sit amet, consectetur adipiscing\
+elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
+bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
+volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
+felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
+ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
+tortor, sit amet consequat amet.",
+"Lorem ipsum dolor sit amet, consectetur adipiscing\
+elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
+bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
+volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
+felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
+ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
+tortor, sit amet consequat amet.");
+
+ FT_STRCMP_EXPECT("", "asdf");
+ FT_STRCMP_EXPECT("bon", "bo");
+ FT_STRCMP_EXPECT("bonjour", "onjour");
+ FT_STRCMP_EXPECT("%c%s%p%x%X%e%f%g", "%s%p%x%X%e%f%g");
+ FT_STRCMP_EXPECT("the\0hidden", "thehidden");
+ FT_STRCMP_EXPECT("Lorem ipsum dolor st amet, consectetur adipiscing", "Lodsfsdfasdf");
+}
+
void
ft_strcmp_test(void)
{
+ test_name = "ft_strcmp.s";
+ ft_strcmp_test_segfault();
+ if (!signaled)
+ ft_strcmp_test_compare();
}
diff --git a/ft_strcpy_test.c b/ft_strcpy_test.c
index 75eae86..8fb065e 100644
--- a/ft_strcpy_test.c
+++ b/ft_strcpy_test.c
@@ -1,7 +1,60 @@
#include "libasm_test.h"
+#define FT_STRCPY_BUF_SIZE (1 << 12)
+
+static char expected_buf[FT_STRCPY_BUF_SIZE] = {0};
+static char actual_buf[FT_STRCPY_BUF_SIZE] = {0};
+
+#define FT_STRCPY_EXPECT(str) do { \
+ strcpy(expected_buf, str); \
+ ft_strcpy(actual_buf, str); \
+ if (strcmp(expected_buf, actual_buf) != 0) \
+ printf("KO: [COMPARE]: %s: expected: \"%s\" got: \"%s\"\n", test_name, expected_buf, actual_buf); \
+ else \
+ print_ok(); \
+} while (0);
+
+
+static void
+ft_strcpy_test_segfault(void)
+{
+ char buf[FT_STRCPY_BUF_SIZE] = {0};
+
+ TEST_ASM_FUNCTION(ft_strcpy(buf, ""));
+ TEST_ASM_FUNCTION(ft_strcpy(buf, "abc"));
+ TEST_ASM_FUNCTION(ft_strcpy(buf, "asl;fjl;asdjfjkasdl;fjadjsf"));
+ TEST_ASM_FUNCTION(ft_strcpy(buf, "yope\0la"));
+ TEST_ASM_FUNCTION(ft_strcpy(buf, "Lorem ipsum dolor sit amet, consectetur adipiscing\
+elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
+bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
+volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
+felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
+ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
+tortor, sit amet consequat amet."));
+}
+
+static void
+ft_strcpy_test_compare(void)
+{
+ FT_STRCPY_EXPECT("");
+ FT_STRCPY_EXPECT("abc");
+ FT_STRCPY_EXPECT("asl;fjl;asdjfjkasdl;fjadjsf");
+ FT_STRCPY_EXPECT("yope\0la");
+ FT_STRCPY_EXPECT("Lorem ipsum dolor sit amet, consectetur adipiscing\
+elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
+bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
+volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
+felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
+ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
+tortor, sit amet consequat amet.");
+}
+
void
ft_strcpy_test(void)
{
+ test_name = "ft_strcpy.s";
+ ft_strcpy_test_segfault();
+ if (!signaled)
+ ft_strcpy_test_compare();
}
diff --git a/ft_strlen_test.c b/ft_strlen_test.c
index 1e5caf0..7229316 100644
--- a/ft_strlen_test.c
+++ b/ft_strlen_test.c
@@ -41,5 +41,6 @@ ft_strlen_test(void)
{
test_name = "ft_strlen.s";
ft_strlen_test_segfault();
- ft_strlen_test_compare();
+ if (!signaled)
+ ft_strlen_test_compare();
}
diff --git a/libasm_test.h b/libasm_test.h
index c340903..98a6ee8 100644
--- a/libasm_test.h
+++ b/libasm_test.h
@@ -46,7 +46,9 @@ ft_list_sort(t_list **begin_list, int (*cmp)());
void
ft_list_remove_if(t_list **begin_list, void *data_ref, int (*cmp)(), void (*free_fct)(void *));
-
+/*
+ * test_functions
+ */
void
ft_strlen_test(void);
void
@@ -61,6 +63,9 @@ void
ft_strdup_test(void);
+/*
+ * helpers
+ */
void
print_ok(void);
void
@@ -68,6 +73,9 @@ print_signaled_ko(void);
void
expect_int(int expected, int actual);
+/*
+ * segfault tester
+ */
int pid;
bool signaled;
@@ -83,32 +91,14 @@ bool signaled;
} \
} while(0);
-
-// void *saved_sp;
-// bool stack_alignment_error;
-//
-// # define TEST_STACK_ALIGNMENT(x) do { \
-// stack_alignment_error = false; \
-// saved_sp = asm ("sp"); \
-// do { x } while(0); \
-// stack_alignment_error = saved_sp != asm("sp")); \
-// } while (0);
-
char *test_name;
# define TEST_ASM_FUNCTION(x) do { \
- TEST_SEGFAULT(x); \
- if (signaled) \
- print_signaled_ko(); \
- else \
- print_ok(); \
+ TEST_SEGFAULT(x); \
+ if (signaled) \
+ print_signaled_ko(); \
+ else \
+ print_ok(); \
} while(0);
-// # define EXPECT(expected, actual) do { \
-// if (actual == expected) \
-// print_ok(); \
-// else \
-// printf("KO: [COMPARE]: expected: \""#expected"\" got: \""#actual"\"\n", test_name); \
-// while (0);
-
-#endif
+#endif /* LIBASM_TEST_H */