]> Untitled Git - axy/ft/ft_printf.git/commitdiff
Test script
author= <=>
Sun, 2 Nov 2025 13:10:31 +0000 (14:10 +0100)
committer= <=>
Sun, 2 Nov 2025 13:10:31 +0000 (14:10 +0100)
test.c [new file with mode: 0644]
test.sh [new file with mode: 0755]

diff --git a/test.c b/test.c
new file mode 100644 (file)
index 0000000..98319fc
--- /dev/null
+++ b/test.c
@@ -0,0 +1,97 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   test.c                                             :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: agilliar <agilliar@student.42mulhouse.fr>  +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/10/31 23:55:18 by agilliar          #+#    #+#             */
+/*   Updated: 2025/11/01 00:07:17 by agilliar         ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+/*
+       cc test.c libftprintf.a && ./a.out > test.out && [ \
+       "$(awk "NR % 2 == 1 { print; }" test.out)" \
+       == "$(awk "NR % 2 == 0 { print; }" test.out)" ] \
+       || echo "TEST FAILED"
+*/
+
+#include <stdio.h>
+#include <limits.h>
+#include "libftprintf.h"
+
+#define TEST_PRINTF(...) { \
+       int r1 = printf(__VA_ARGS__); \
+       fflush(stdout); \
+       int r2 = ft_printf(__VA_ARGS__); \
+       if (r1 != r2) \
+       { \
+               fprintf(stderr, "printf failed, r1: %i, r2: %i\n", r1, r2); \
+               res = 1; \
+       } \
+}
+
+int    main(void)
+{
+       int res = 0;
+       const void      *test_ptr = "test";
+       TEST_PRINTF("this %corks\n", 'w');
+       TEST_PRINTF("this %3corks\n", 'w');
+       TEST_PRINTF("this %s\n", "is awesome");
+       TEST_PRINTF("this %.5s\n", "is awesome");
+       TEST_PRINTF("this %2s\n", "is awesome");
+       TEST_PRINTF("this %10.6s\n", "is awesome");
+       TEST_PRINTF("this %.6s\n", "is awesome");
+       TEST_PRINTF("this %1.6s\n", "is awesome");
+       TEST_PRINTF("this %.6s\n", NULL);
+       TEST_PRINTF("this %p\n", NULL);
+       TEST_PRINTF("this %0p\n", test_ptr);
+       TEST_PRINTF("this %-24p a\n", test_ptr);
+       TEST_PRINTF("this %24p a\n", test_ptr);
+       TEST_PRINTF("this %i a\n", 12);
+       TEST_PRINTF("this %d a\n", 12);
+       TEST_PRINTF("this %i a\n", INT_MAX);
+       TEST_PRINTF("this %d a\n", INT_MIN);
+       TEST_PRINTF("this %.0i a\n", 0);
+       TEST_PRINTF("this %5.0d a\n", 0);
+       TEST_PRINTF("this %#-10i a\n", 12);
+       TEST_PRINTF("this %#-10.5d a\n", 12);
+       TEST_PRINTF("this % 10.5i a\n", 12);
+       TEST_PRINTF("this % 10.5d a\n", -123);
+       TEST_PRINTF("this % .5i a\n", 12);
+       TEST_PRINTF("this %+10.5d a\n", 12);
+       TEST_PRINTF("this %+10.5i a\n", -123);
+       TEST_PRINTF("this %010.5d a\n", 12);
+       TEST_PRINTF("this %0-10.5i a\n", 12);
+       TEST_PRINTF("this %020u a\n", UINT_MAX);
+       TEST_PRINTF("this %.0u a\n", 0);
+       TEST_PRINTF("this %-10.0u a\n", 15);
+       TEST_PRINTF("this %020x a\n", UINT_MAX);
+       TEST_PRINTF("this %.0x a\n", 0);
+       TEST_PRINTF("this %-10.0x a\n", 15);
+       TEST_PRINTF("this %020X a\n", UINT_MAX);
+       TEST_PRINTF("this %.0X a\n", 0);
+       TEST_PRINTF("this %-10.0X a\n", 15);
+       TEST_PRINTF("this %#020u a\n", UINT_MAX);
+       TEST_PRINTF("this %#.0u a\n", 0);
+       TEST_PRINTF("this %#-10.0u a\n", 15);
+       TEST_PRINTF("this %#020x a\n", UINT_MAX);
+       TEST_PRINTF("this %#.0x a\n", 0);
+       TEST_PRINTF("this %#-10.0x a\n", 15);
+       TEST_PRINTF("this %#020X a\n", UINT_MAX);
+       TEST_PRINTF("this %#.0X a\n", 0);
+       TEST_PRINTF("this %#-10.0X a\n", 15);
+       TEST_PRINTF("this %+#020u a\n", UINT_MAX);
+       TEST_PRINTF("this %+#.0u a\n", 0);
+       TEST_PRINTF("this %+#-10.0u a\n", 15);
+       TEST_PRINTF("this %+#020x a\n", UINT_MAX);
+       TEST_PRINTF("this %+#.0x a\n", 0);
+       TEST_PRINTF("this %+#-10.0x a\n", 15);
+       TEST_PRINTF("this %+#020X a\n", UINT_MAX);
+       TEST_PRINTF("this %+#.0X a\n", 0);
+       TEST_PRINTF("this %+#-10.0X a\n", 15);
+       TEST_PRINTF("%% hai %15s%05i\n", "this num is: ", 621);
+
+       return res;
+}
diff --git a/test.sh b/test.sh
new file mode 100755 (executable)
index 0000000..c5a8010
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+make
+
+cc test.c libftprintf.a && ./a.out > test.out && [ \
+       "$(awk "NR % 2 == 1 { print; }" test.out)" \
+       == "$(awk "NR % 2 == 0 { print; }" test.out)" ] \
+       || echo "TEST FAILED"
+rm test.out
+rm a.out