diff --git a/test/main.c b/test/main.c index f5b71c6..b7dbe23 100644 --- a/test/main.c +++ b/test/main.c @@ -1,29 +1,82 @@ #include "libasm.h" +#include #include #include +#include -int main(void) +typedef void (*t_test_func)(void); + +char *strs[] = { + "", + "a", + "aa", + "aaa", + "Hello\0 World!", + "Hello World!", + "Assembly is fun!", + LOREM, + NULL +}; + +static void _test_strlen() { + printf("\n\n\n%sTesting '%sstrlen%s'%s\n", CLR_YELLOW, CLR_BLUE, CLR_YELLOW, RESET); + printf("%sTesting on: '%sNULL%s'%s\n", CLR_YELLOW, CLR_BLUE, CLR_YELLOW, RESET); + printf("%sHomeMade: %s%zu%s\n\n\n", CLR_YELLOW, CLR_BLUE, ft_strlen(NULL), RESET); + for (int i = 0; strs[i]; i++) { - printf("\n\n\n%sTesting '%sstrlen%s'%s\n", CLR_YELLOW, CLR_BLUE, CLR_YELLOW, RESET); - printf("%sTesting on: '%sNULL%s'%s\n", CLR_YELLOW, CLR_BLUE, CLR_YELLOW, RESET); - printf("%sHomeMade: %s%zu%s\n\n\n", CLR_YELLOW, CLR_BLUE, ft_strlen(NULL), RESET); - char *strs[] = { - "", - "a", - "aa", - "aaa", - "Hello\0 World!", - "Hello World!", - "Assembly is fun!", - LOREM, - NULL - }; - for (int i = 0; strs[i]; i++) + printf("%sTesting on: '%s%s%s'%s\n", CLR_YELLOW, CLR_BLUE, strs[i], CLR_YELLOW, RESET); + printf("\n%sOriginal: %s%zu%s\n", CLR_YELLOW, CLR_BLUE, strlen(strs[i]), RESET); + printf("%sHomeMade: %s%zu%s\n\n\n", CLR_YELLOW, CLR_BLUE, ft_strlen(strs[i]), RESET); + } +} + +static void _test_strcmp() +{ + printf("\n\n\n%sTesting '%sstrcmp%s'%s\n", CLR_YELLOW, CLR_BLUE, CLR_YELLOW, RESET); + printf("%sTesting on: '%sNULL%s'%s\n", CLR_YELLOW, CLR_BLUE, CLR_YELLOW, RESET); + printf("%sHomeMade: %s%i%s\n\n\n", CLR_YELLOW, CLR_BLUE, ft_strcmp(NULL, ""), RESET); + for (int i = 0; strs[i]; i++) + { + for (int j = i; strs[i] && strs[j]; j++) { - printf("%sTesting on: '%s%s%s'%s\n", CLR_YELLOW, CLR_BLUE, strs[i], CLR_YELLOW, RESET); - printf("\n%sOriginal: %s%zu%s\n", CLR_YELLOW, CLR_BLUE, strlen(strs[i]), RESET); - printf("%sHomeMade: %s%zu%s\n\n\n", CLR_YELLOW, CLR_BLUE, ft_strlen(strs[i]), RESET); + printf("%sTesting on: '%s%s%s'/'%s%s%s'%s\n", CLR_YELLOW, CLR_BLUE, strs[i], CLR_YELLOW, CLR_BLUE, strs[j], CLR_YELLOW, RESET); + printf("\n%sOriginal: %s%i%s\n", CLR_YELLOW, CLR_BLUE, strcmp(strs[i], strs[j]), RESET); + printf("%sHomeMade: %s%i%s\n\n\n", CLR_YELLOW, CLR_BLUE, ft_strcmp(strs[i], strs[j]), RESET); } } } + +int main(int argc, char *argv[]) +{ + t_test_func tests[] = { + _test_strlen, + _test_strcmp, + NULL + }; + char *func_name[] = { + "strlen", + "strcmp", + NULL + }; + + if (argc < 2) + for (size_t i = 0; tests[i]; i++) + tests[i](); + else + { + for (size_t i = 0; func_name[i]; i++) + { + if (strcmp(func_name[i], argv[1]) == 0) + { + tests[i](); + return (0); + } + } + dprintf(2, "%sError:\n\t%s is not available\nHere's the list of available test:%s\n\n", CLR_RED, argv[0], RESET); + for (size_t i = 0; func_name[i]; i++) + dprintf(2, "\t%s%s%s\n", CLR_RED, func_name[i], RESET); + return (1); + } + return (0); +}