140 lines
3.3 KiB
C
140 lines
3.3 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* test_printf.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: lalgarra <lalgarra@student.42madrid.com> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2025/10/15 18:54:32 by lalgarra #+# #+# */
|
|
/* Updated: 2025/10/17 20:22:55 by lalgarra ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include "ft_printf.h"
|
|
#include <stdarg.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
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 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();
|
|
test99();
|
|
return (0);
|
|
}
|