Mercurial > printf
diff test_fprintf.c @ 0:e3088565a6b8 default tip
*: initial commit
kinda dumb, but wifi was out and I was bored.
most of this code is shit.
| author | Paper <paper@tflc.us> |
|---|---|
| date | Wed, 03 Dec 2025 03:04:39 -0500 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test_fprintf.c Wed Dec 03 03:04:39 2025 -0500 @@ -0,0 +1,66 @@ +#include "printf.h" + +#include <locale.h> +#include <stdlib.h> /* malloc */ +#include <limits.h> +#include <stdint.h> +#include <limits.h> +#include <float.h> + +int test_fprintf(void) +{ + int n, n2; + FILE *f1, *f2; + + f1 = tmpfile(); + f2 = tmpfile(); + + n = my_fprintf(f1, +#include "test.h" + ); + if (n < 0) { + fprintf(stderr, "my_fprintf: %s\n", my_strerror(n)); + return -1; + } + n2 = fprintf(f2, +#include "test.h" + ); + if (n2 < 0) { + perror("fprintf"); + return -1; + } + + fseek(f1, 0, SEEK_SET); + fseek(f2, 0, SEEK_SET); + + if (n != n2) { + fclose(f1); + fclose(f2); + return -1; + } + + for (;;) { + int c1, c2; + + c1 = fgetc(f1); + c2 = fgetc(f2); + + if (c1 != c2) { + fprintf(stderr, "Got different results!!\n"); + fprintf(stderr, " fprintf @ %ld: %c", ftell(f1), c1); + fprintf(stderr, " my_fprintf @ %ld: %c", ftell(f2), c2); + + fclose(f1); + fclose(f2); + return -1; + } + + if (c1 == EOF) + break; + } + + fclose(f1); + fclose(f2); + + return 0; +} \ No newline at end of file
