From 90b1ca1289d8249f3ec70e4a1753e78e4baeb4f7 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 11 Dec 2025 23:11:13 +0100 Subject: [PATCH] test(write): adding write test --- test/main.c | 87 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 75 insertions(+), 12 deletions(-) diff --git a/test/main.c b/test/main.c index b7dbe23..8adccce 100644 --- a/test/main.c +++ b/test/main.c @@ -1,7 +1,10 @@ #include "libasm.h" +#include #include #include +#include #include +#include #include typedef void (*t_test_func)(void); @@ -20,31 +23,89 @@ char *strs[] = { 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); + printf("\n%sTesting '%sstrlen%s'%s\n", CLR_YELLOW, CLR_BLUE, CLR_YELLOW, RESET); + ft_strlen(NULL); + printf("%s✔%s ", CLR_GREEN, 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); + size_t original = strlen(strs[i]); + size_t homemade = ft_strlen(strs[i]); + if (original == homemade) + printf("%s✔%s ", CLR_GREEN, RESET); + else + dprintf(2, "\t%s✘%s ", CLR_RED, RESET); } + putchar('\n'); } 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); + printf("\n%sTesting '%sstrcmp%s'%s\n", CLR_YELLOW, CLR_BLUE, CLR_YELLOW, RESET); + ft_strcmp(NULL, "a"); + printf("%s✔%s ", CLR_GREEN, RESET); + ft_strcmp("a", NULL); + printf("%s✔%s ", CLR_GREEN, RESET); + ft_strcmp(NULL, NULL); + printf("%s✔%s ", CLR_GREEN, 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); + size_t original = strcmp(strs[i], strs[j]); + size_t homemade = ft_strcmp(strs[i], strs[j]); + if (original == homemade) + printf("%s✔%s ", CLR_GREEN, RESET); + else + dprintf(2, "\t%s✘%s ", CLR_RED, RESET); } } + putchar('\n'); +} + +static void _test_write(void) +{ + int original, homemade; + int err_original, err_homemade, test_file; + + printf("\n%sTesting '%sft_write%s'%s\n", + CLR_YELLOW, CLR_BLUE, CLR_YELLOW, RESET); + errno = 0; + original = write(1, NULL, 5); + err_original = errno; + errno = 0; + homemade = ft_write(1, NULL, 5); + err_homemade = errno; + if (original == homemade && err_original == err_homemade) + printf("%s✔%s ", CLR_GREEN, RESET); + else + printf("%s✘%s ", CLR_RED, RESET); + + for (int i = 0; strs[i]; i++) + { + errno = 0; + test_file = open("/tmp/rparodi_libasm_write.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644); + original = write(test_file, strs[i], strlen(strs[i])); + err_original = errno; + errno = 0; + homemade = ft_write(test_file, strs[i], strlen(strs[i])); + err_homemade = errno; + if (original == homemade && err_original == err_homemade) + printf("%s✔%s ", CLR_GREEN, RESET); + else + dprintf(2, "\t%s✘%s ", CLR_RED, RESET); + close(test_file); + } + errno = 0; + original = write(-1, "A", 1); + err_original = errno; + errno = 0; + homemade = ft_write(-1, "A", 1); + err_homemade = errno; + if (original == homemade && err_original == err_homemade) + printf("%s✔%s ", CLR_GREEN, RESET); + else + printf("%s✘%s ", CLR_RED, RESET); + putchar('\n'); } int main(int argc, char *argv[]) @@ -52,11 +113,13 @@ int main(int argc, char *argv[]) t_test_func tests[] = { _test_strlen, _test_strcmp, + _test_write, NULL }; char *func_name[] = { "strlen", "strcmp", + "write", NULL };