diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-11-23 20:57:37 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-11-23 20:57:37 +0100 |
| commit | 97e84015b635cf51d32b00000dc3fa25390251b4 (patch) | |
| tree | cb666d88199308bdbe82900e791db777ce573e8b | |
| parent | 0696a5c7f9abe5451a0baf3170296704714fcce8 (diff) | |
| download | libasm_test-97e84015b635cf51d32b00000dc3fa25390251b4.tar.gz libasm_test-97e84015b635cf51d32b00000dc3fa25390251b4.tar.bz2 libasm_test-97e84015b635cf51d32b00000dc3fa25390251b4.zip | |
Basic test for ft_strcpy.s and ft_strcmp.s
| -rw-r--r-- | ft_strcmp_test.c | 73 | ||||
| -rw-r--r-- | ft_strcpy_test.c | 53 | ||||
| -rw-r--r-- | ft_strlen_test.c | 3 | ||||
| -rw-r--r-- | libasm_test.h | 40 |
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 */ |
