annotate test_snprintf.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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
1 #include "printf.h"
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
2
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
3 #include <stdint.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
4 #include <stdlib.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
5 #include <string.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
6 #include <limits.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
7 #include <float.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
8
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
9 /* This is a smaller buffer size than test.h needs, because we want to test
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
10 * NUL-terminating behavior. */
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
11 #define BUFSZ 128
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
12
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
13 int test_snprintf(void)
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
14 {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
15 int n1, n2, b1, b2;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
16 char s1[BUFSZ], s2[BUFSZ];
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
17
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
18 b1 = my_snprintf(NULL, 0,
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
19 #include "test.h"
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
20 );
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
21 if (b1 < 0) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
22 fprintf(stderr, "my_snprintf(NULL, 0, ...): %s\n", my_strerror(b1));
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
23 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
24 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
25
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
26 b2 = snprintf(NULL, 0,
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
27 #include "test.h"
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
28 );
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
29 if (b2 < 0) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
30 perror("snprintf(NULL, 0, ...)");
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
31 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
32 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
33
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
34 if (b1 != b2) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
35 fprintf(stderr, "snprintf and my_snprintf returned different buffer sizes!\n");
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
36 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
37 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
38
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
39 n1 = my_snprintf(s1, BUFSZ,
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
40 #include "test.h"
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
41 );
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
42 if (n1 < 0) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
43 fprintf(stderr, "my_snprintf: %s\n", my_strerror(n1));
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
44 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
45 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
46 n2 = snprintf(s2, BUFSZ,
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
47 #include "test.h"
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
48 );
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
49 if (n2 < 0) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
50 my_free(s1);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
51 perror("snprintf");
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
52 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
53 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
54
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
55 if (n1 != b1) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
56 fprintf(stderr, "my_snprintf with and without a buffer returned different results\n");
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
57 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
58 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
59
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
60 if (n1 != n2) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
61 printf("snprintf and my_snprintf returned different buffer sizes\n");
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
62 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
63 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
64
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
65 if (strcmp(s1, s2)) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
66 fprintf(stderr, "Got different results!!\n");
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
67 fprintf(stderr, " snprintf: %s", s1);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
68 fprintf(stderr, " my_snprintf: %s", s2);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
69
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
70 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
71 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
72
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
73 return 0;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
74 }