aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ft_atoi_base_test.c139
-rw-r--r--test/ft_list_push_front_test.c17
-rw-r--r--test/ft_list_remove_if_test.c17
-rw-r--r--test/ft_list_size_test.c17
-rw-r--r--test/ft_list_sort_test.c17
-rw-r--r--test/ft_read_test.c67
-rw-r--r--test/ft_strcmp_test.c118
-rw-r--r--test/ft_strcpy_test.c62
-rw-r--r--test/ft_strdup_test.c69
-rw-r--r--test/ft_strlen_test.c46
-rw-r--r--test/ft_write_test.c67
11 files changed, 636 insertions, 0 deletions
diff --git a/test/ft_atoi_base_test.c b/test/ft_atoi_base_test.c
new file mode 100644
index 0000000..8801565
--- /dev/null
+++ b/test/ft_atoi_base_test.c
@@ -0,0 +1,139 @@
+#include "libasm_test.h"
+
+static int expected_ret;
+static int actual_ret;
+
+ /* asm("movq $0xffffffffffffffff, %rax"); \ */
+#define FT_ATOI_BASE_EXPECT(str, base) do { \
+ actual_ret = ft_atoi_base(str, base); \
+ expected_ret = ref_ft_atoi_base(str, base); \
+ if (actual_ret != expected_ret) \
+ printf("KO: [COMPARE]: %s: expected: %d got: %d with: "#str", "#base"\n", \
+ test_name, expected_ret, actual_ret); \
+ else \
+ print_ok(); \
+} while (0);
+
+static void
+ft_atoi_base_segfault(void)
+{
+ TEST_ASM_FUNCTION(ft_atoi_base("", ""));
+ TEST_ASM_FUNCTION(ft_atoi_base("10", ""));
+ TEST_ASM_FUNCTION(ft_atoi_base("", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("123", "0123456789"));
+ TEST_ASM_FUNCTION(ft_atoi_base("101", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("ffe0", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("\t\n\r\v\f\r 4", "01234"));
+ TEST_ASM_FUNCTION(ft_atoi_base("45", ""));
+ TEST_ASM_FUNCTION(ft_atoi_base("45", "0"));
+ TEST_ASM_FUNCTION(ft_atoi_base("45", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("10", "011"));
+ TEST_ASM_FUNCTION(ft_atoi_base("10", "0+"));
+ TEST_ASM_FUNCTION(ft_atoi_base("10", "-0"));
+ TEST_ASM_FUNCTION(ft_atoi_base("10111", "\t541"));
+ TEST_ASM_FUNCTION(ft_atoi_base("10111", "98\n541"));
+ TEST_ASM_FUNCTION(ft_atoi_base("10111", "7\r541"));
+ TEST_ASM_FUNCTION(ft_atoi_base("10111", "0\v541"));
+ TEST_ASM_FUNCTION(ft_atoi_base("10111", "1\f541"));
+ TEST_ASM_FUNCTION(ft_atoi_base("10111", "54 1"));
+ TEST_ASM_FUNCTION(ft_atoi_base("111000", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("ff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("52", "01234567"));
+ TEST_ASM_FUNCTION(ft_atoi_base("2a", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("7fffffff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("ff", "0123-456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("ff", "01\r23456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("ff", "abcc"));
+ TEST_ASM_FUNCTION(ft_atoi_base("ff", ""));
+ TEST_ASM_FUNCTION(ft_atoi_base("ff", "a"));
+ TEST_ASM_FUNCTION(ft_atoi_base("-ff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("--ff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("+--ff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("-++++++-+--ff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("-++++++-+--ff\xff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("-+\r++-+--ff\xff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("-01", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("--11101", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("+-123", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("-++++01++-+--ff", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("-++10101\xff", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("-+\r++-+--01\x01", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("a\0bb", "ab"));
+ TEST_ASM_FUNCTION(ft_atoi_base("-b\0bb", "ab"));
+ TEST_ASM_FUNCTION(ft_atoi_base(" \t\n\r-++++++-+--ff\xff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base(" -+\r++-+--ff\xff", "0123456789abcdef"));
+ TEST_ASM_FUNCTION(ft_atoi_base("\n-01", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base("\x0b--11101", "01"));
+ TEST_ASM_FUNCTION(ft_atoi_base(" 755x+", "01234567"));
+ TEST_ASM_FUNCTION(ft_atoi_base(" 700chmod", "01234567"));
+ TEST_ASM_FUNCTION(ft_atoi_base(" 644yo", "01234567"));
+ TEST_ASM_FUNCTION(ft_atoi_base(TO_STRING(INT_MAX), "0123456789"));
+ TEST_ASM_FUNCTION(ft_atoi_base(TO_STRING(INT_MIN), "0123456789"));
+}
+
+static void
+ft_atoi_base_compare(void)
+{
+ FT_ATOI_BASE_EXPECT("", "");
+ FT_ATOI_BASE_EXPECT("10", "");
+ FT_ATOI_BASE_EXPECT("", "01");
+ FT_ATOI_BASE_EXPECT("123", "0123456789");
+ FT_ATOI_BASE_EXPECT("101", "01");
+ FT_ATOI_BASE_EXPECT("ffe0", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("\t\n\r\v\f\r 4", "01234");
+ FT_ATOI_BASE_EXPECT("45", "");
+ FT_ATOI_BASE_EXPECT("45", "0");
+ FT_ATOI_BASE_EXPECT("45", "01");
+ FT_ATOI_BASE_EXPECT("10", "011");
+ FT_ATOI_BASE_EXPECT("10", "0+");
+ FT_ATOI_BASE_EXPECT("10", "-0");
+ FT_ATOI_BASE_EXPECT("10111", "\t541");
+ FT_ATOI_BASE_EXPECT("10111", "98\n541");
+ FT_ATOI_BASE_EXPECT("10111", "7\r541");
+ FT_ATOI_BASE_EXPECT("10111", "0\v541");
+ FT_ATOI_BASE_EXPECT("10111", "1\f541");
+ FT_ATOI_BASE_EXPECT("10111", "54 1");
+ FT_ATOI_BASE_EXPECT("111000", "01");
+ FT_ATOI_BASE_EXPECT("ff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("52", "01234567");
+ FT_ATOI_BASE_EXPECT("2a", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("7fffffff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("ff", "0123-456789abcdef");
+ FT_ATOI_BASE_EXPECT("ff", "01\r23456789abcdef");
+ FT_ATOI_BASE_EXPECT("ff", "abcc");
+ FT_ATOI_BASE_EXPECT("ff", "");
+ FT_ATOI_BASE_EXPECT("ff", "a");
+ FT_ATOI_BASE_EXPECT("-ff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("--ff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("+--ff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("-++++++-+--ff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("-++++++-+--ff\xff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("-+\r++-+--ff\xff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("-01", "01");
+ FT_ATOI_BASE_EXPECT("--11101", "01");
+ FT_ATOI_BASE_EXPECT("+-123", "01");
+ FT_ATOI_BASE_EXPECT("-++++01++-+--ff", "01");
+ FT_ATOI_BASE_EXPECT("-++10101\xff", "01");
+ FT_ATOI_BASE_EXPECT("-+\r++-+--01\x01", "01");
+ FT_ATOI_BASE_EXPECT("a\0bb", "ab");
+ FT_ATOI_BASE_EXPECT("-b\0bb", "ab");
+ FT_ATOI_BASE_EXPECT(" \t\n\r-++++++-+--ff\xff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT(" -+\r++-+--ff\xff", "0123456789abcdef");
+ FT_ATOI_BASE_EXPECT("\n-01", "01");
+ FT_ATOI_BASE_EXPECT("\x0b--11101", "01");
+ FT_ATOI_BASE_EXPECT(" 755x+", "01234567");
+ FT_ATOI_BASE_EXPECT(" 700chmod", "01234567");
+ FT_ATOI_BASE_EXPECT(" 644yo", "01234567");
+ FT_ATOI_BASE_EXPECT(TO_STRING(INT_MAX), "0123456789");
+ FT_ATOI_BASE_EXPECT(TO_STRING(INT_MIN), "0123456789");
+}
+
+void
+ft_atoi_base_test(void)
+{
+ test_name = "ft_atoi_base.s";
+
+ ft_atoi_base_segfault();
+ if (!signaled)
+ ft_atoi_base_compare();
+}
diff --git a/test/ft_list_push_front_test.c b/test/ft_list_push_front_test.c
new file mode 100644
index 0000000..411194e
--- /dev/null
+++ b/test/ft_list_push_front_test.c
@@ -0,0 +1,17 @@
+#include "libasm_test.h"
+
+static void
+ft_list_push_front_segfault(void)
+{
+
+}
+static void
+ft_list_push_front_compare(void)
+{
+
+}
+void
+ft_list_push_front_test(void)
+{
+
+}
diff --git a/test/ft_list_remove_if_test.c b/test/ft_list_remove_if_test.c
new file mode 100644
index 0000000..e574949
--- /dev/null
+++ b/test/ft_list_remove_if_test.c
@@ -0,0 +1,17 @@
+#include "libasm_test.h"
+
+static void
+ft_list_remove_if_segfault(void)
+{
+
+}
+static void
+ft_list_remove_if_compare(void)
+{
+
+}
+void
+ft_list_remove_if_test(void)
+{
+
+}
diff --git a/test/ft_list_size_test.c b/test/ft_list_size_test.c
new file mode 100644
index 0000000..80394d7
--- /dev/null
+++ b/test/ft_list_size_test.c
@@ -0,0 +1,17 @@
+#include "libasm_test.h"
+
+static void
+ft_list_size_segfault(void)
+{
+
+}
+static void
+ft_list_size_compare(void)
+{
+
+}
+void
+ft_list_size_test(void)
+{
+
+}
diff --git a/test/ft_list_sort_test.c b/test/ft_list_sort_test.c
new file mode 100644
index 0000000..e9fe2da
--- /dev/null
+++ b/test/ft_list_sort_test.c
@@ -0,0 +1,17 @@
+#include "libasm_test.h"
+
+static void
+ft_list_sort_segfault(void)
+{
+
+}
+static void
+ft_list_sort_compare(void)
+{
+
+}
+void
+ft_list_sort_test(void)
+{
+
+}
diff --git a/test/ft_read_test.c b/test/ft_read_test.c
new file mode 100644
index 0000000..50a85bd
--- /dev/null
+++ b/test/ft_read_test.c
@@ -0,0 +1,67 @@
+#include "libasm_test.h"
+
+#define FT_READ_BUF_SIZE (1 << 12)
+
+static int ft_read_pipe[2];
+static char buf[FT_READ_BUF_SIZE];
+static int ret;
+
+#define FT_READ_EXPECT(str) do { \
+ if (pipe(ft_read_pipe) < 0) \
+ exit(EXIT_FAILURE); \
+ fcntl(ft_read_pipe[0], F_SETFL, O_NONBLOCK); \
+ write(ft_read_pipe[1], str, strlen(str)); \
+ ret = ft_read(ft_read_pipe[0], buf, FT_READ_BUF_SIZE); \
+ buf[ret] = '\0'; \
+ if (strcmp(buf, str) != 0) \
+ printf("KO: [COMPARE]: %s: expected: \"%s\" got: \"%s\"\n", test_name, str, buf); \
+ else \
+ print_ok(); \
+ close(ft_read_pipe[1]); \
+ close(ft_read_pipe[0]); \
+} while (0);
+
+void
+ft_read_test_segfault(void)
+{
+ int tmp[2];
+ if (pipe(tmp) < 0)
+ exit(EXIT_FAILURE);
+ TEST_ASM_FUNCTION(ft_read(tmp[1], "test", 5));
+ TEST_ASM_FUNCTION(ft_read(tmp[1], "t", 1));
+ TEST_ASM_FUNCTION(ft_read(tmp[1], "", 0));
+ TEST_ASM_FUNCTION(ft_read(tmp[1], "test", 4));
+ TEST_ASM_FUNCTION(ft_read(tmp[1], "test", 2));
+ TEST_ASM_FUNCTION(ft_read(tmp[1], NULL, 2));
+ close(tmp[0]);
+ close(tmp[1]);
+ TEST_ASM_FUNCTION(ft_read(-1, "tt", 2));
+ TEST_ASM_FUNCTION(ft_read(OPEN_MAX + 1, "tt", 2));
+}
+
+void
+ft_read_test_compare(void)
+{
+ FT_READ_EXPECT("");
+ FT_READ_EXPECT("bon");
+ FT_READ_EXPECT("bonjour");
+ FT_READ_EXPECT("%c%s%p%x%X%e%f%g");
+ FT_READ_EXPECT("the\0hidden");
+ FT_READ_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_read_test(void)
+{
+ test_name = "ft_read.s";
+
+ ft_read_test_segfault();
+ if (!signaled)
+ ft_read_test_compare();
+}
diff --git a/test/ft_strcmp_test.c b/test/ft_strcmp_test.c
new file mode 100644
index 0000000..fa62157
--- /dev/null
+++ b/test/ft_strcmp_test.c
@@ -0,0 +1,118 @@
+#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."));
+}
+
+int strcmp_expected;
+int strcmp_actual;
+
+#ifdef __linux__
+# define FT_STRCMP_EXPECT(s1, s2) do { \
+ strcmp_expected = strcmp(s1, s2); \
+ strcmp_actual = ft_strcmp(s1, s2); \
+ if ((strcmp_expected < 0 && strcmp_actual < 0) || \
+ (strcmp_expected > 0 && strcmp_actual > 0) || \
+ (strcmp_expected == 0 && strcmp_actual == 0)) \
+ print_ok(); \
+ else \
+ printf("KO: [COMPARE]: ft_strcmp.s: expected: %d got: %d\n", \
+ strcmp_expected, strcmp_actual); \
+} while (0);
+#else
+# define FT_STRCMP_EXPECT(s1, s2) expect_int(strcmp(s1, s2), ft_strcmp(s1, s2))
+#endif
+
+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");
+
+ FT_STRCMP_EXPECT("\x01", "\x01");
+ FT_STRCMP_EXPECT("\x02", "\x01");
+ FT_STRCMP_EXPECT("\x01", "\x02");
+ FT_STRCMP_EXPECT("\xff", "\xff");
+ FT_STRCMP_EXPECT("\xfe", "\xff");
+ FT_STRCMP_EXPECT("\xff", "\xfe");
+
+ FT_STRCMP_EXPECT("\x01\x01", "\x01");
+ FT_STRCMP_EXPECT("\x01\x02", "\x01");
+ FT_STRCMP_EXPECT("\x02\x01", "\x02");
+ FT_STRCMP_EXPECT("\xff\xff", "\xff");
+ FT_STRCMP_EXPECT("\xff\xfe", "\xff");
+ FT_STRCMP_EXPECT("\xfe\xff", "\xfe");
+
+ FT_STRCMP_EXPECT("\x01", "\x01\x01");
+ FT_STRCMP_EXPECT("\x01", "\x01\x02");
+ FT_STRCMP_EXPECT("\x02", "\x02\x01");
+ FT_STRCMP_EXPECT("\xff", "\xff\xff");
+ FT_STRCMP_EXPECT("\xff", "\xff\xfe");
+ FT_STRCMP_EXPECT("\xfe", "\xfe\xff");
+}
+
+void
+ft_strcmp_test(void)
+{
+ test_name = "ft_strcmp.s";
+
+ ft_strcmp_test_segfault();
+ if (!signaled)
+ ft_strcmp_test_compare();
+}
diff --git a/test/ft_strcpy_test.c b/test/ft_strcpy_test.c
new file mode 100644
index 0000000..c8ec474
--- /dev/null
+++ b/test/ft_strcpy_test.c
@@ -0,0 +1,62 @@
+#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.");
+ FT_STRCPY_EXPECT("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0b\x0c\x0d\x0e\x0f");
+ FT_STRCPY_EXPECT("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0b\x0c\x0d\x0e\x0f");
+}
+
+void
+ft_strcpy_test(void)
+{
+ test_name = "ft_strcpy.s";
+
+ ft_strcpy_test_segfault();
+ if (!signaled)
+ ft_strcpy_test_compare();
+}
diff --git a/test/ft_strdup_test.c b/test/ft_strdup_test.c
new file mode 100644
index 0000000..5ca7850
--- /dev/null
+++ b/test/ft_strdup_test.c
@@ -0,0 +1,69 @@
+#include "libasm_test.h"
+
+static char *tmp;
+
+#define FT_STRDUP_EXPECT(str) do { \
+ tmp = ft_strdup(str); \
+ if (tmp == NULL || strcmp(str, tmp) != 0) \
+ printf("KO: [COMPARE]: %s: expected: \"%s\" got: \"%s\"\n", test_name, str, tmp); \
+ else \
+ print_ok(); \
+ free(tmp); \
+} while (0);
+
+static void
+ft_strdup_test_segfault(void)
+{
+ char *tmp2 = NULL;
+ char a;
+
+ TEST_ASM_FUNCTION(ft_strdup(""));
+ TEST_ASM_FUNCTION(ft_strdup("abc"));
+ TEST_ASM_FUNCTION(ft_strdup("asl;fjl;asdjfjkasdl;fjadjsf"));
+ TEST_ASM_FUNCTION(ft_strdup("yope\0la"));
+ TEST_ASM_FUNCTION(ft_strdup("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."));
+
+ tmp2 = ft_strdup("");
+ TEST_ASM_FUNCTION(a = *tmp2);
+ tmp2 = ft_strdup("abc");
+ TEST_ASM_FUNCTION(a = *tmp2);
+ tmp2 = ft_strdup("asl;fjl;asd");
+ TEST_ASM_FUNCTION(a = *tmp2);
+ tmp2 = ft_strdup("yope\0la");
+ TEST_ASM_FUNCTION(a = *tmp2);
+}
+
+static void
+ft_strdup_test_compare(void)
+{
+ FT_STRDUP_EXPECT("");
+ FT_STRDUP_EXPECT("abc");
+ FT_STRDUP_EXPECT("asl;fjl;asdjfjkasdl;fjadjsf");
+ FT_STRDUP_EXPECT("yope\0la");
+ FT_STRDUP_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_STRDUP_EXPECT("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0b\x0c\x0d\x0e\x0f");
+ FT_STRDUP_EXPECT("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0b\x0c\x0d\x0e\x0f");
+}
+
+
+void
+ft_strdup_test(void)
+{
+ test_name = "ft_strdup.s";
+
+ ft_strdup_test_segfault();
+ if (!signaled)
+ ft_strdup_test_compare();
+}
diff --git a/test/ft_strlen_test.c b/test/ft_strlen_test.c
new file mode 100644
index 0000000..7229316
--- /dev/null
+++ b/test/ft_strlen_test.c
@@ -0,0 +1,46 @@
+#include "libasm_test.h"
+
+static void
+ft_strlen_test_segfault(void)
+{
+ TEST_ASM_FUNCTION(ft_strlen(""));
+ TEST_ASM_FUNCTION(ft_strlen("bon"));
+ TEST_ASM_FUNCTION(ft_strlen("bonjour"));
+ TEST_ASM_FUNCTION(ft_strlen("%c%s%p%x%X%e%f%g"));
+ TEST_ASM_FUNCTION(ft_strlen("the\0hidden"));
+ TEST_ASM_FUNCTION(ft_strlen("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_STRLEN_EXPECT(str) expect_int(strlen(str), ft_strlen(str))
+
+static void
+ft_strlen_test_compare(void)
+{
+ FT_STRLEN_EXPECT("");
+ FT_STRLEN_EXPECT("bon");
+ FT_STRLEN_EXPECT("bonjour");
+ FT_STRLEN_EXPECT("%c%s%p%x%X%e%f%g");
+ FT_STRLEN_EXPECT("the\0hidden");
+ FT_STRLEN_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_strlen_test(void)
+{
+ test_name = "ft_strlen.s";
+ ft_strlen_test_segfault();
+ if (!signaled)
+ ft_strlen_test_compare();
+}
diff --git a/test/ft_write_test.c b/test/ft_write_test.c
new file mode 100644
index 0000000..1c14244
--- /dev/null
+++ b/test/ft_write_test.c
@@ -0,0 +1,67 @@
+#include "libasm_test.h"
+
+#define FT_WRITE_BUF_SIZE (1 << 12)
+
+static int ft_write_pipe[2];
+static char buf[FT_WRITE_BUF_SIZE];
+static int ret;
+
+#define FT_WRITE_EXPECT(str) do { \
+ if (pipe(ft_write_pipe) < 0) \
+ exit(EXIT_FAILURE); \
+ fcntl(ft_write_pipe[0], F_SETFL, O_NONBLOCK); \
+ ft_write(ft_write_pipe[1], str, strlen(str)); \
+ ret = read(ft_write_pipe[0], buf, FT_WRITE_BUF_SIZE); \
+ buf[ret] = '\0'; \
+ if (strcmp(buf, str) != 0) \
+ printf("KO: [COMPARE]: %s: expected: \"%s\" got: \"%s\"\n", test_name, str, buf); \
+ else \
+ print_ok(); \
+ close(ft_write_pipe[1]); \
+ close(ft_write_pipe[0]); \
+} while (0);
+
+void
+ft_write_test_segfault(void)
+{
+ int tmp[2];
+ if (pipe(tmp) < 0)
+ exit(EXIT_FAILURE);
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "test", 5));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "t", 1));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "", 0));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "test", 4));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], "test", 2));
+ TEST_ASM_FUNCTION(ft_write(tmp[1], NULL, 2));
+ close(tmp[0]);
+ close(tmp[1]);
+ TEST_ASM_FUNCTION(ft_write(-1, "tt", 2));
+ TEST_ASM_FUNCTION(ft_write(OPEN_MAX + 1, "tt", 2));
+}
+
+void
+ft_write_test_compare(void)
+{
+ FT_WRITE_EXPECT("");
+ FT_WRITE_EXPECT("bon");
+ FT_WRITE_EXPECT("bonjour");
+ FT_WRITE_EXPECT("%c%s%p%x%X%e%f%g");
+ FT_WRITE_EXPECT("the\0hidden");
+ FT_WRITE_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_write_test(void)
+{
+ test_name = "ft_write.s";
+
+ ft_write_test_segfault();
+ if (!signaled)
+ ft_write_test_compare();
+}