/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* test_printf_bonus.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lalgarra +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/10/15 18:54:32 by lalgarra #+# #+# */ /* Updated: 2025/10/24 20:48:52 by lalgarra ### ########.fr */ /* */ /* ************************************************************************** */ #include "ft_printf.h" #include #include #include #include static char *get_begin(void) { return "%s printf() output: [BEGIN]"; } static char *get_ftbegin(void) { return "%s ft_printf() output: [BEGIN]"; } static char *get_end(void) { return "[END]; returns: %i\n"; } static void call_printf(const char *prefix, const char *sfmt, ...) { int ret; va_list args; printf(get_begin(), prefix); printf("format string: \"%s\"\n", sfmt); printf(get_begin(), prefix); va_start(args, sfmt); ret = vprintf(sfmt, args); va_end(args); printf(get_end(), ret); fflush(stdout); } static void test01() { char prefix[128]; char sfmt[128]; char arg1[128]; int ret; strcpy(prefix, "test01: "); strcpy(sfmt, "Hola %s Mundo"); strcpy(arg1, "Es%sto es una \xfa prueba"); call_printf(prefix, sfmt, arg1); printf(get_ftbegin(), prefix); fflush(stdout); ret = ft_printf(sfmt, arg1); printf(get_end(), ret); fflush(stdout); } static void test_int(char *prefix, char *sfmt, int val) { int ret; call_printf(prefix, sfmt, val); printf(get_ftbegin(), prefix); fflush(stdout); ret = ft_printf(sfmt, val); printf(get_end(), ret); fflush(stdout); } static void test02() { char prefix[128]; char sfmt[128]; strcpy(prefix, "test02: "); strcpy(sfmt, "Entero con %%d: %d"); test_int(prefix, sfmt, -325); } static void test03() { char prefix[128]; char sfmt[128]; strcpy(prefix, "test03: "); strcpy(sfmt, "Entero con %%i: %i"); test_int(prefix, sfmt, 9123325); } static void test04() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test04: "); strcpy(sfmt, "%%s: NULL %s NULL; %%p: %p %p --eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, NULL, 0, 0); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, NULL, 0, 0); ft_printf("ret=%i\n", ret); } static void test05() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test05: "); strcpy(sfmt, "%%5x: %5x; %%-5X: %-5X; %%#-5x: %#-5x; %%#5X: %#5X--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 0xfafe, 0xab, 0xfafe, 0xab); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 0xfafe, 0xab, 0xfafe, 0xab); ft_printf("ret=%i\n", ret); } static void test06() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test06: "); strcpy(sfmt, "%%-1c, %%-2c, %%-3c: %-1c, %-2c, %-3c --eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, '0', 0, '1'); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, '0', 0, '1'); ft_printf("ret=%i\n", ret); } static void test07() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test07: "); strcpy(sfmt, "%%-1c, %%-2c, %%-3c: %-1c, %-2c, %-3c --eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, '2', '1', 0); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, '2', '1', 0); ft_printf("ret=%i\n", ret); } static void test08() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test08: "); strcpy(sfmt, "%%-1c, %%-2c, %%-3c: %-1c, %-2c, %-3c --eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 0, '1', '2'); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 0, '1', '2'); ft_printf("ret=%i\n", ret); } static void test09() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test09: "); strcpy(sfmt, "%%1s, %%-1s, %%-2s %1s, %-1s, %-2s --eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, "", "", ""); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, "", "", ""); ft_printf("ret=%i\n", ret); } static void test10() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test10: "); strcpy(sfmt, "%%.2sx%%.3sx%%.4sx%%.5sx%%.1s:x%.2sx%.3sx%.4sx%.5sx%.1s--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, " - ", "", "4", "", "2 "); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, " - ", "", "4", "", "2 "); ft_printf("ret=%i\n", ret); } static void test11() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test11: "); strcpy(sfmt, "%%-11p, %%-12p:%-11p,%-12p--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, INT_MIN, INT_MAX); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, INT_MIN, INT_MAX); ft_printf("ret=%i\n", ret); } static void test12() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test12: "); strcpy(sfmt, "%%-13p, %%-14p:%-13p,%-14p--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, ULONG_MAX, -ULONG_MAX); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, ULONG_MAX, -ULONG_MAX); ft_printf("ret=%i\n", ret); } static void test13() { char prefix[138]; char sfmt[138]; int ret; strcpy(prefix, "test13: "); strcpy(sfmt, "%%-9d,%%-10d,%%-11d,%%-12d,%%-13d,%%-14d,%%-15d:%-9d,%-10d,%-11d,%-12d,%-13d,%-14d,%-15d --eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, INT_MAX, INT_MIN, LONG_MAX, LONG_MIN, ULONG_MAX, 0, -42); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, INT_MAX, INT_MIN, LONG_MAX, LONG_MIN, ULONG_MAX, 0, -42); ft_printf("ret=%i\n", ret); } static void test14() { char prefix[148]; char sfmt[148]; int ret; strcpy(prefix, "test14: "); strcpy(sfmt, "%%09d,%%010d,%%011d,%%012d,%%013d,%%014d,%%015d:%09d,%010d,%011d,%012d,%013d,%014d,%015d--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, INT_MAX, INT_MIN, LONG_MAX, LONG_MIN, ULONG_MAX, 0, -42); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, INT_MAX, INT_MIN, LONG_MAX, LONG_MIN, ULONG_MAX, 0, -42); ft_printf("ret=%i\n", ret); } static void test15() { char prefix[158]; char sfmt[158]; int ret; strcpy(prefix, "test15: "); strcpy(sfmt, "%%04d:%04d--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 9); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 9); ft_printf("ret=%i\n", ret); } static void test16() { char prefix[168]; char sfmt[168]; int ret; strcpy(prefix, "test16: "); strcpy(sfmt, "%%.5d:%.5d,%.5d--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 17, 99); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 17, 99); ft_printf("ret=%i\n", ret); } static void test17() { char prefix[178]; char sfmt[178]; int ret; strcpy(prefix, "test17: "); strcpy(sfmt, "%%.5d:%.5d,%.5d--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, -17, -99); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, -17, -99); ft_printf("ret=%i\n", ret); } static void test18() { char prefix[188]; char sfmt[188]; int ret; strcpy(prefix, "test18: "); strcpy(sfmt, "%%.10d,%%.12d,%%.13d,%%14d:%.10d,%.12d,%.13d,%14d--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, LONG_MAX, UINT_MAX, ULONG_MAX, 9223372036854775807LL); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, LONG_MAX, UINT_MAX, ULONG_MAX, 9223372036854775807LL); ft_printf("ret=%i\n", ret); } static void test19() { char prefix[198]; char sfmt[198]; int ret; strcpy(prefix, "test19: "); strcpy(sfmt, "%%.2d,%%.3d,%%.3d,%%.4d:%.2d,%.3d,%.3d,%.4d--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, -1, -11, -99, -101); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, -1, -11, -99, -101); ft_printf("ret=%i\n", ret); } static void test20() { char prefix[208]; char sfmt[208]; int ret; strcpy(prefix, "test20: "); strcpy(sfmt, "%% d,%% d,%%+d,%%+d:% d,% d,%+d,%+d--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 0, INT_MAX, 99, LONG_MIN); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 0, INT_MAX, 99, LONG_MIN); ft_printf("ret=%i\n", ret); } static void test21() { char prefix[218]; char sfmt[218]; int ret; strcpy(prefix, "test21: "); strcpy(sfmt, "%%.s:%.s--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, "-"); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, "-"); ft_printf("ret=%i\n", ret); } static void test22() { char prefix[228]; char sfmt[228]; int ret; strcpy(prefix, "test22: "); strcpy(sfmt, "%%01x,%%04x,%%010x:%01x,%04x,%010x--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 0, 9, INT_MIN); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 0, 9, INT_MIN); ft_printf("ret=%i\n", ret); } static void test23() { char prefix[238]; char sfmt[238]; int ret; strcpy(prefix, "test23: "); strcpy(sfmt, "%%.2x,%%.10x:%.2x,%.10x--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 1, LONG_MAX); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 1, LONG_MAX); ft_printf("ret=%i\n", ret); } static void test24() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test24: "); strcpy(sfmt, "%%23s,%%-16s,%%.3s,%%.0s:%23s,%-16s,%.3s,%.0s--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, NULL, "nark nark", "hello", "bye"); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, NULL, "nark nark", "hello", "bye"); ft_printf("ret=%i\n", ret); } static void test25() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test25: "); strcpy(sfmt, "%%7.5s,%%7.5s,%%-7.5s,%%-7.5s:%7.5s,%7.5s,%-7.5s,%-7.5s--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, "yolo", "bombastic", "yolo", "tubular"); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, "yolo", "bombastic", "yolo", "tubular"); ft_printf("ret=%i\n", ret); } static void test26() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test26: "); strcpy(sfmt, "%%8.5i,%%10.5i,%%-8.5i,%%-10.5i:%8.5i,%10.5i,%-8.5i,%-10.5i--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 34, -216, 34, -216); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 34, -216, 34, -216); ft_printf("ret=%i\n", ret); } static void test27() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test27: "); strcpy(sfmt, "%%.03s,%%3.1s:%.03s,%3.1s--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, NULL, NULL); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, NULL, NULL); ft_printf("ret=%i\n", ret); } static void test28() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test28: "); strcpy(sfmt, "%%08.5i,%%010.5i,%%.i:%08.5i,%010.5i,%.i--eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 34, -216, 0); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 34, -216, 0); ft_printf("ret=%i\n", ret); } static void test50() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test50: "); strcpy(sfmt, "%%#c: %#c; %%#s: %#s; %%#p: %#p; %%#d: %#d; %%#i: %#i; %%#u: %#u; %%#x: %#x; %%#X: %#X --eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 'a', "Lorem ipsum", (void *)prefix, 125, -128, 325u, 0xfa, 0xfb); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 'a', "Lorem ipsum", (void *)prefix, 125, -128, 325u, 0xfa, 0xfb); ft_printf("ret=%i\n", ret); } static void test99() { char prefix[128]; char sfmt[128]; int ret; strcpy(prefix, "test99: "); strcpy(sfmt, "%%c: %c; %%s: %s; %%p: %p; %%d: %d; %%i: %i; %%u: %u; %%x: %x; %%X: %X --eof; "); printf("%s printf(): ", prefix); ret = printf(sfmt, 'a', "Lorem ipsum", (void *)prefix, 125, -128, 325u, 0xfa, 0xfb); printf("ret=%i\n", ret); fflush(stdout); ft_printf("%sft_printf(): ", prefix); ret = ft_printf(sfmt, 'a', "Lorem ipsum", (void *)prefix, 125, -128, 325u, 0xfa, 0xfb); ft_printf("ret=%i\n", ret); } int main(void) { test01(); test02(); test03(); test04(); test05(); test06(); test07(); test08(); test09(); test10(); test11(); test12(); test13(); test14(); test15(); test16(); test17(); test18(); test19(); test20(); test21(); test22(); test23(); test24(); test25(); test26(); test27(); test28(); test50(); test99(); return (0); }