#include "libasm.h" #include #include #include #include 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("%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%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); }