28#define sym2s(x) sym2v(x)
30#define INT_MIN_DEZ_STR "2147483648"
31#define INT_MAX_DEZ_STR "2147483647"
32#define UINT_MAX_DEZ_STR "4294967295"
33#define INT_HEXDIG "fffffff"
34#define INT_hexdig "fffffff"
35#define INT_OCTDIG "37777777777"
38#define INT_DIG_LESS1 "9"
39#define INT_DIG_PLUS1 "11"
40#define INT_DIG_PLUS2 "12"
43#define LONG_MAX_DEZ_STR "9223372036854775807"
44#define LONG_MIN_DEZ_STR "9223372036854775808"
45#define ULONG_MAX_DEZ_STR "18446744073709551615"
48#define LLONG_MAX_DEZ_STR "9223372036854775807"
49#define LLONG_MIN_DEZ_STR "9223372036854775808"
50#define ULLONG_MAX_DEZ_STR "18446744073709551615"
52#define _PRINT_TEST(rc, expected, ...) \
55 int ret = snprintf(buffer, sizeof(buffer), __VA_ARGS__); \
56 if (ret != rc || strcmp(buffer, expected) != 0) \
58 LOG_ERR("_PRINT_TEST failed at line %d: expected (%d, \"%s\"), got (%d, \"%s\")\n", __LINE__, rc, \
59 expected, ret, buffer); \
64static inline uint64_t _test_print_iter(
void)
67#pragma GCC diagnostic push
68#pragma GCC diagnostic ignored "-Wformat"
72 _PRINT_TEST(4,
"-128",
"%hhd",
CHAR_MIN);
74 _PRINT_TEST(3,
"127",
"%hhd",
CHAR_MAX);
77 _PRINT_TEST(1,
"0",
"%hhu",
CHAR_MIN);
79 _PRINT_TEST(3,
"255",
"%hhu",
CHAR_MAX);
81 _PRINT_TEST(1,
"0",
"%hhd", 0);
83 _PRINT_TEST(6,
"-32768",
"%hd",
SHRT_MIN);
85 _PRINT_TEST(5,
"32767",
"%hd",
SHRT_MAX);
86 _PRINT_TEST(1,
"0",
"%hd", 0);
87 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%d",
INT_MIN);
88 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%d",
INT_MAX);
89 _PRINT_TEST(1,
"0",
"%d", 0);
90 _PRINT_TEST(LONG_DIG + 1,
"-" LONG_MIN_DEZ_STR,
"%ld",
LONG_MIN);
91 _PRINT_TEST(LONG_DIG, LONG_MAX_DEZ_STR,
"%ld",
LONG_MAX);
92 _PRINT_TEST(1,
"0",
"%ld", 0l);
93 _PRINT_TEST(LLONG_DIG + 1,
"-" LLONG_MIN_DEZ_STR,
"%lld",
LLONG_MIN);
94 _PRINT_TEST(LLONG_DIG, LLONG_MAX_DEZ_STR,
"%lld",
LLONG_MAX);
95 _PRINT_TEST(1,
"0",
"%lld", 0ll);
97 _PRINT_TEST(3,
"255",
"%hhu", (
unsigned char)-1);
98 _PRINT_TEST(5,
"65535",
"%hu",
USHRT_MAX);
99 _PRINT_TEST(5,
"65535",
"%hu", (
unsigned short)-1);
100 _PRINT_TEST(UINT_DIG, UINT_MAX_DEZ_STR,
"%u",
UINT_MAX);
101 _PRINT_TEST(UINT_DIG, UINT_MAX_DEZ_STR,
"%u", -1u);
102 _PRINT_TEST(ULONG_DIG, ULONG_MAX_DEZ_STR,
"%lu",
ULONG_MAX);
103 _PRINT_TEST(ULONG_DIG, ULONG_MAX_DEZ_STR,
"%lu", -1ul);
104 _PRINT_TEST(ULLONG_DIG, ULLONG_MAX_DEZ_STR,
"%llu",
ULLONG_MAX);
105 _PRINT_TEST(ULLONG_DIG, ULLONG_MAX_DEZ_STR,
"%llu", -1ull);
106 _PRINT_TEST((
int)
strlen(INT_HEXDIG) + 1,
"f" INT_hexdig,
"%x",
UINT_MAX);
107 _PRINT_TEST((
int)
strlen(INT_HEXDIG) + 3,
"0xf" INT_hexdig,
"%#x", -1u);
109 _PRINT_TEST((
int)
strlen(INT_OCTDIG) + 1,
"0" INT_OCTDIG,
"%#o", -1u);
112 _PRINT_TEST( 5,
"%.0#o",
"%.0#o", 0 );
114 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%+d",
INT_MIN);
115 _PRINT_TEST(INT_DIG + 1,
"+" INT_MAX_DEZ_STR,
"%+d",
INT_MAX);
116 _PRINT_TEST(2,
"+0",
"%+d", 0);
117 _PRINT_TEST(UINT_DIG, UINT_MAX_DEZ_STR,
"%+u",
UINT_MAX);
118 _PRINT_TEST(UINT_DIG, UINT_MAX_DEZ_STR,
"%+u", -1u);
119 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"% d",
INT_MIN);
120 _PRINT_TEST(INT_DIG + 1,
" " INT_MAX_DEZ_STR,
"% d",
INT_MAX);
121 _PRINT_TEST(2,
" 0",
"% d", 0);
122 _PRINT_TEST(UINT_DIG, UINT_MAX_DEZ_STR,
"% u",
UINT_MAX);
123 _PRINT_TEST(UINT_DIG, UINT_MAX_DEZ_STR,
"% u", -1u);
124 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%" INT_DIG_LESS1
"d",
INT_MIN);
125 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%" INT_DIG_LESS1
"d",
INT_MAX);
126 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%" sym2s(INT_DIG)
"d",
INT_MIN);
127 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%" sym2s(INT_DIG)
"d",
INT_MAX);
128 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%" INT_DIG_PLUS1
"d",
INT_MIN);
129 _PRINT_TEST(INT_DIG + 1,
" " INT_MAX_DEZ_STR,
"%" INT_DIG_PLUS1
"d",
INT_MAX);
130 _PRINT_TEST(INT_DIG + 2,
" -" INT_MIN_DEZ_STR,
"%" INT_DIG_PLUS2
"d",
INT_MIN);
131 _PRINT_TEST(INT_DIG + 2,
" " INT_MAX_DEZ_STR,
"%" INT_DIG_PLUS2
"d",
INT_MAX);
132 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%-" INT_DIG_LESS1
"d",
INT_MIN);
133 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%-" INT_DIG_LESS1
"d",
INT_MAX);
134 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%-" sym2s(INT_DIG)
"d",
INT_MIN);
135 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%-" sym2s(INT_DIG)
"d",
INT_MAX);
136 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%-" INT_DIG_PLUS1
"d",
INT_MIN);
137 _PRINT_TEST(INT_DIG + 1, INT_MAX_DEZ_STR
" ",
"%-" INT_DIG_PLUS1
"d",
INT_MAX);
138 _PRINT_TEST(INT_DIG + 2,
"-" INT_MIN_DEZ_STR
" ",
"%-" INT_DIG_PLUS2
"d",
INT_MIN);
139 _PRINT_TEST(INT_DIG + 2, INT_MAX_DEZ_STR
" ",
"%-" INT_DIG_PLUS2
"d",
INT_MAX);
140 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%0" INT_DIG_LESS1
"d",
INT_MIN);
141 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%0" INT_DIG_LESS1
"d",
INT_MAX);
142 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%0" sym2s(INT_DIG)
"d",
INT_MIN);
143 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%0" sym2s(INT_DIG)
"d",
INT_MAX);
144 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%0" INT_DIG_PLUS1
"d",
INT_MIN);
145 _PRINT_TEST(INT_DIG + 1,
"0" INT_MAX_DEZ_STR,
"%0" INT_DIG_PLUS1
"d",
INT_MAX);
146 _PRINT_TEST(INT_DIG + 2,
"-0" INT_MIN_DEZ_STR,
"%0" INT_DIG_PLUS2
"d",
INT_MIN);
147 _PRINT_TEST(INT_DIG + 2,
"00" INT_MAX_DEZ_STR,
"%0" INT_DIG_PLUS2
"d",
INT_MAX);
148 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%-0" INT_DIG_LESS1
"d",
INT_MIN);
149 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%-0" INT_DIG_LESS1
"d",
INT_MAX);
150 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%-0" sym2s(INT_DIG)
"d",
INT_MIN);
151 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%-0" sym2s(INT_DIG)
"d",
INT_MAX);
152 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%-0" INT_DIG_PLUS1
"d",
INT_MIN);
153 _PRINT_TEST(INT_DIG + 1, INT_MAX_DEZ_STR
" ",
"%-0" INT_DIG_PLUS1
"d",
INT_MAX);
154 _PRINT_TEST(INT_DIG + 2,
"-" INT_MIN_DEZ_STR
" ",
"%-0" INT_DIG_PLUS2
"d",
INT_MIN);
155 _PRINT_TEST(INT_DIG + 2, INT_MAX_DEZ_STR
" ",
"%-0" INT_DIG_PLUS2
"d",
INT_MAX);
157 _PRINT_TEST(30,
" 00000000002147483647",
"%030.20d",
INT_MAX);
158 _PRINT_TEST((
int)
strlen(INT_HEXDIG) + 1,
"f" INT_hexdig,
"%.6x",
UINT_MAX);
159 _PRINT_TEST((
int)
strlen(INT_HEXDIG) + 3,
"0xf" INT_hexdig,
"%#6.3x",
UINT_MAX);
160 _PRINT_TEST((
int)
strlen(INT_HEXDIG) + 3,
"0xf" INT_hexdig,
"%#3.6x",
UINT_MAX);
161 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%.6d",
INT_MIN);
162 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%6.3d",
INT_MIN);
163 _PRINT_TEST(INT_DIG + 1,
"-" INT_MIN_DEZ_STR,
"%3.6d",
INT_MIN);
164 _PRINT_TEST(UINT_DIG,
"0xf" INT_hexdig,
"%#0.6x",
UINT_MAX);
165 _PRINT_TEST(UINT_DIG,
"0xf" INT_hexdig,
"%#06.3x",
UINT_MAX);
166 _PRINT_TEST(UINT_DIG,
"0xf" INT_hexdig,
"%#03.6x",
UINT_MAX);
167 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%#0.6d",
INT_MAX);
168 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%#06.3d",
INT_MAX);
169 _PRINT_TEST(INT_DIG, INT_MAX_DEZ_STR,
"%#03.6d",
INT_MAX);
170 _PRINT_TEST(INT_DIG + 1,
"+" INT_MAX_DEZ_STR,
"%#+.6d",
INT_MAX);
171 _PRINT_TEST(INT_DIG + 1,
"+" INT_MAX_DEZ_STR,
"%#+6.3d",
INT_MAX);
172 _PRINT_TEST(INT_DIG + 1,
"+" INT_MAX_DEZ_STR,
"%#+3.6d",
INT_MAX);
173 _PRINT_TEST(INT_DIG + 1,
"+" INT_MAX_DEZ_STR,
"%+0.6d",
INT_MAX);
174 _PRINT_TEST(INT_DIG + 1,
"+" INT_MAX_DEZ_STR,
"%+06.3d",
INT_MAX);
175 _PRINT_TEST(INT_DIG + 1,
"+" INT_MAX_DEZ_STR,
"%+03.6d",
INT_MAX);
176#ifndef TEST_CONVERSION_ONLY
177 _PRINT_TEST(INT_DIG + 2,
"- " INT_MAX_DEZ_STR,
"- %d",
INT_MAX);
178 _PRINT_TEST(INT_DIG * 2 + 6,
"- " INT_MAX_DEZ_STR
" % -" INT_MIN_DEZ_STR,
"- %d %% %d",
INT_MAX,
INT_MIN);
180 _PRINT_TEST(1,
"x",
"%c",
'x');
181 _PRINT_TEST(6,
"abcdef",
"%s",
"abcdef");
182 _PRINT_TEST(18,
"0x00000000deadbeef",
"%p", (
void*)0xdeadbeef);
183 _PRINT_TEST(6,
" 0x1",
"%#6x", 1);
184#ifndef TEST_CONVERSION_ONLY
187 _PRINT_TEST(9,
"123456789",
"123456%n789%n", &val1, &val2);
193 _PRINT_TEST(1,
"1",
"%tu", (
ptrdiff_t)1);
194 _PRINT_TEST(2,
"-1",
"%jd", (
intmax_t)-1);
195 _PRINT_TEST(1,
"1",
"%ju", (
uintmax_t)1);
196 _PRINT_TEST(1,
"1",
"%zd", (
size_t)1);
230#ifndef TEST_CONVERSION_ONLY
232 _PRINT_TEST(12,
"Hallo heimur",
"Hallo heimur");
235 _PRINT_TEST(12,
"Hallo heimur",
"%s",
"Hallo heimur");
236 _PRINT_TEST(4,
"1024",
"%d", 1024);
237 _PRINT_TEST(5,
"-1024",
"%d", -1024);
238 _PRINT_TEST(4,
"1024",
"%i", 1024);
239 _PRINT_TEST(5,
"-1024",
"%i", -1024);
240 _PRINT_TEST(4,
"1024",
"%u", 1024u);
241 _PRINT_TEST(10,
"4294966272",
"%u", -1024u);
242 _PRINT_TEST(3,
"777",
"%o", 0777u);
243 _PRINT_TEST(11,
"37777777001",
"%o", -0777u);
244 _PRINT_TEST(8,
"1234abcd",
"%x", 0x1234abcdu);
245 _PRINT_TEST(8,
"edcb5433",
"%x", -0x1234abcdu);
246 _PRINT_TEST(8,
"1234ABCD",
"%X", 0x1234abcdu);
247 _PRINT_TEST(8,
"EDCB5433",
"%X", -0x1234abcdu);
248 _PRINT_TEST(1,
"x",
"%c",
'x');
249 _PRINT_TEST(1,
"%",
"%%");
251 _PRINT_TEST(1,
"\0",
"%c",
'\0');
253 _PRINT_TEST(12,
"Hallo heimur",
"%+s",
"Hallo heimur");
254 _PRINT_TEST(5,
"+1024",
"%+d", 1024);
255 _PRINT_TEST(5,
"-1024",
"%+d", -1024);
256 _PRINT_TEST(5,
"+1024",
"%+i", 1024);
257 _PRINT_TEST(5,
"-1024",
"%+i", -1024);
258 _PRINT_TEST(4,
"1024",
"%+u", 1024u);
259 _PRINT_TEST(10,
"4294966272",
"%+u", -1024u);
260 _PRINT_TEST(3,
"777",
"%+o", 0777u);
261 _PRINT_TEST(11,
"37777777001",
"%+o", -0777u);
262 _PRINT_TEST(8,
"1234abcd",
"%+x", 0x1234abcdu);
263 _PRINT_TEST(8,
"edcb5433",
"%+x", -0x1234abcdu);
264 _PRINT_TEST(8,
"1234ABCD",
"%+X", 0x1234abcdu);
265 _PRINT_TEST(8,
"EDCB5433",
"%+X", -0x1234abcdu);
266 _PRINT_TEST(1,
"x",
"%+c",
'x');
268 _PRINT_TEST(12,
"Hallo heimur",
"% s",
"Hallo heimur");
269 _PRINT_TEST(5,
" 1024",
"% d", 1024);
270 _PRINT_TEST(5,
"-1024",
"% d", -1024);
271 _PRINT_TEST(5,
" 1024",
"% i", 1024);
272 _PRINT_TEST(5,
"-1024",
"% i", -1024);
273 _PRINT_TEST(4,
"1024",
"% u", 1024u);
274 _PRINT_TEST(10,
"4294966272",
"% u", -1024u);
275 _PRINT_TEST(3,
"777",
"% o", 0777u);
276 _PRINT_TEST(11,
"37777777001",
"% o", -0777u);
277 _PRINT_TEST(8,
"1234abcd",
"% x", 0x1234abcdu);
278 _PRINT_TEST(8,
"edcb5433",
"% x", -0x1234abcdu);
279 _PRINT_TEST(8,
"1234ABCD",
"% X", 0x1234abcdu);
280 _PRINT_TEST(8,
"EDCB5433",
"% X", -0x1234abcdu);
281 _PRINT_TEST(1,
"x",
"% c",
'x');
283 _PRINT_TEST(12,
"Hallo heimur",
"%+ s",
"Hallo heimur");
284 _PRINT_TEST(5,
"+1024",
"%+ d", 1024);
285 _PRINT_TEST(5,
"-1024",
"%+ d", -1024);
286 _PRINT_TEST(5,
"+1024",
"%+ i", 1024);
287 _PRINT_TEST(5,
"-1024",
"%+ i", -1024);
288 _PRINT_TEST(4,
"1024",
"%+ u", 1024u);
289 _PRINT_TEST(10,
"4294966272",
"%+ u", -1024u);
290 _PRINT_TEST(3,
"777",
"%+ o", 0777u);
291 _PRINT_TEST(11,
"37777777001",
"%+ o", -0777u);
292 _PRINT_TEST(8,
"1234abcd",
"%+ x", 0x1234abcdu);
293 _PRINT_TEST(8,
"edcb5433",
"%+ x", -0x1234abcdu);
294 _PRINT_TEST(8,
"1234ABCD",
"%+ X", 0x1234abcdu);
295 _PRINT_TEST(8,
"EDCB5433",
"%+ X", -0x1234abcdu);
296 _PRINT_TEST(1,
"x",
"%+ c",
'x');
298 _PRINT_TEST(4,
"0777",
"%#o", 0777u);
299 _PRINT_TEST(12,
"037777777001",
"%#o", -0777u);
300 _PRINT_TEST(10,
"0x1234abcd",
"%#x", 0x1234abcdu);
301 _PRINT_TEST(10,
"0xedcb5433",
"%#x", -0x1234abcdu);
302 _PRINT_TEST(10,
"0X1234ABCD",
"%#X", 0x1234abcdu);
303 _PRINT_TEST(10,
"0XEDCB5433",
"%#X", -0x1234abcdu);
304 _PRINT_TEST(1,
"0",
"%#o", 0u);
305 _PRINT_TEST(1,
"0",
"%#x", 0u);
306 _PRINT_TEST(1,
"0",
"%#X", 0u);
308 _PRINT_TEST(12,
"Hallo heimur",
"%1s",
"Hallo heimur");
309 _PRINT_TEST(4,
"1024",
"%1d", 1024);
310 _PRINT_TEST(5,
"-1024",
"%1d", -1024);
311 _PRINT_TEST(4,
"1024",
"%1i", 1024);
312 _PRINT_TEST(5,
"-1024",
"%1i", -1024);
313 _PRINT_TEST(4,
"1024",
"%1u", 1024u);
314 _PRINT_TEST(10,
"4294966272",
"%1u", -1024u);
315 _PRINT_TEST(3,
"777",
"%1o", 0777u);
316 _PRINT_TEST(11,
"37777777001",
"%1o", -0777u);
317 _PRINT_TEST(8,
"1234abcd",
"%1x", 0x1234abcdu);
318 _PRINT_TEST(8,
"edcb5433",
"%1x", -0x1234abcdu);
319 _PRINT_TEST(8,
"1234ABCD",
"%1X", 0x1234abcdu);
320 _PRINT_TEST(8,
"EDCB5433",
"%1X", -0x1234abcdu);
321 _PRINT_TEST(1,
"x",
"%1c",
'x');
323 _PRINT_TEST(20,
" Hallo",
"%20s",
"Hallo");
324 _PRINT_TEST(20,
" 1024",
"%20d", 1024);
325 _PRINT_TEST(20,
" -1024",
"%20d", -1024);
326 _PRINT_TEST(20,
" 1024",
"%20i", 1024);
327 _PRINT_TEST(20,
" -1024",
"%20i", -1024);
328 _PRINT_TEST(20,
" 1024",
"%20u", 1024u);
329 _PRINT_TEST(20,
" 4294966272",
"%20u", -1024u);
330 _PRINT_TEST(20,
" 777",
"%20o", 0777u);
331 _PRINT_TEST(20,
" 37777777001",
"%20o", -0777u);
332 _PRINT_TEST(20,
" 1234abcd",
"%20x", 0x1234abcdu);
333 _PRINT_TEST(20,
" edcb5433",
"%20x", -0x1234abcdu);
334 _PRINT_TEST(20,
" 1234ABCD",
"%20X", 0x1234abcdu);
335 _PRINT_TEST(20,
" EDCB5433",
"%20X", -0x1234abcdu);
336 _PRINT_TEST(20,
" x",
"%20c",
'x');
338 _PRINT_TEST(20,
"Hallo ",
"%-20s",
"Hallo");
339 _PRINT_TEST(20,
"1024 ",
"%-20d", 1024);
340 _PRINT_TEST(20,
"-1024 ",
"%-20d", -1024);
341 _PRINT_TEST(20,
"1024 ",
"%-20i", 1024);
342 _PRINT_TEST(20,
"-1024 ",
"%-20i", -1024);
343 _PRINT_TEST(20,
"1024 ",
"%-20u", 1024u);
344 _PRINT_TEST(20,
"4294966272 ",
"%-20u", -1024u);
345 _PRINT_TEST(20,
"777 ",
"%-20o", 0777u);
346 _PRINT_TEST(20,
"37777777001 ",
"%-20o", -0777u);
347 _PRINT_TEST(20,
"1234abcd ",
"%-20x", 0x1234abcdu);
348 _PRINT_TEST(20,
"edcb5433 ",
"%-20x", -0x1234abcdu);
349 _PRINT_TEST(20,
"1234ABCD ",
"%-20X", 0x1234abcdu);
350 _PRINT_TEST(20,
"EDCB5433 ",
"%-20X", -0x1234abcdu);
351 _PRINT_TEST(20,
"x ",
"%-20c",
'x');
353 _PRINT_TEST(20,
"00000000000000001024",
"%020d", 1024);
354 _PRINT_TEST(20,
"-0000000000000001024",
"%020d", -1024);
355 _PRINT_TEST(20,
"00000000000000001024",
"%020i", 1024);
356 _PRINT_TEST(20,
"-0000000000000001024",
"%020i", -1024);
357 _PRINT_TEST(20,
"00000000000000001024",
"%020u", 1024u);
358 _PRINT_TEST(20,
"00000000004294966272",
"%020u", -1024u);
359 _PRINT_TEST(20,
"00000000000000000777",
"%020o", 0777u);
360 _PRINT_TEST(20,
"00000000037777777001",
"%020o", -0777u);
361 _PRINT_TEST(20,
"0000000000001234abcd",
"%020x", 0x1234abcdu);
362 _PRINT_TEST(20,
"000000000000edcb5433",
"%020x", -0x1234abcdu);
363 _PRINT_TEST(20,
"0000000000001234ABCD",
"%020X", 0x1234abcdu);
364 _PRINT_TEST(20,
"000000000000EDCB5433",
"%020X", -0x1234abcdu);
366 _PRINT_TEST(20,
" 0777",
"%#20o", 0777u);
367 _PRINT_TEST(20,
" 037777777001",
"%#20o", -0777u);
368 _PRINT_TEST(20,
" 0x1234abcd",
"%#20x", 0x1234abcdu);
369 _PRINT_TEST(20,
" 0xedcb5433",
"%#20x", -0x1234abcdu);
370 _PRINT_TEST(20,
" 0X1234ABCD",
"%#20X", 0x1234abcdu);
371 _PRINT_TEST(20,
" 0XEDCB5433",
"%#20X", -0x1234abcdu);
372 _PRINT_TEST(20,
"00000000000000000777",
"%#020o", 0777u);
373 _PRINT_TEST(20,
"00000000037777777001",
"%#020o", -0777u);
374 _PRINT_TEST(20,
"0x00000000001234abcd",
"%#020x", 0x1234abcdu);
375 _PRINT_TEST(20,
"0x0000000000edcb5433",
"%#020x", -0x1234abcdu);
376 _PRINT_TEST(20,
"0X00000000001234ABCD",
"%#020X", 0x1234abcdu);
377 _PRINT_TEST(20,
"0X0000000000EDCB5433",
"%#020X", -0x1234abcdu);
379 _PRINT_TEST(20,
"Hallo ",
"%0-20s",
"Hallo");
380 _PRINT_TEST(20,
"1024 ",
"%0-20d", 1024);
381 _PRINT_TEST(20,
"-1024 ",
"%0-20d", -1024);
382 _PRINT_TEST(20,
"1024 ",
"%0-20i", 1024);
383 _PRINT_TEST(20,
"-1024 ",
"%0-20i", -1024);
384 _PRINT_TEST(20,
"1024 ",
"%0-20u", 1024u);
385 _PRINT_TEST(20,
"4294966272 ",
"%0-20u", -1024u);
386 _PRINT_TEST(20,
"777 ",
"%-020o", 0777u);
387 _PRINT_TEST(20,
"37777777001 ",
"%-020o", -0777u);
388 _PRINT_TEST(20,
"1234abcd ",
"%-020x", 0x1234abcdu);
389 _PRINT_TEST(20,
"edcb5433 ",
"%-020x", -0x1234abcdu);
390 _PRINT_TEST(20,
"1234ABCD ",
"%-020X", 0x1234abcdu);
391 _PRINT_TEST(20,
"EDCB5433 ",
"%-020X", -0x1234abcdu);
392 _PRINT_TEST(20,
"x ",
"%-020c",
'x');
394 _PRINT_TEST(20,
" Hallo",
"%*s", 20,
"Hallo");
395 _PRINT_TEST(20,
" 1024",
"%*d", 20, 1024);
396 _PRINT_TEST(20,
" -1024",
"%*d", 20, -1024);
397 _PRINT_TEST(20,
" 1024",
"%*i", 20, 1024);
398 _PRINT_TEST(20,
" -1024",
"%*i", 20, -1024);
399 _PRINT_TEST(20,
" 1024",
"%*u", 20, 1024u);
400 _PRINT_TEST(20,
" 4294966272",
"%*u", 20, -1024u);
401 _PRINT_TEST(20,
" 777",
"%*o", 20, 0777u);
402 _PRINT_TEST(20,
" 37777777001",
"%*o", 20, -0777u);
403 _PRINT_TEST(20,
" 1234abcd",
"%*x", 20, 0x1234abcdu);
404 _PRINT_TEST(20,
" edcb5433",
"%*x", 20, -0x1234abcdu);
405 _PRINT_TEST(20,
" 1234ABCD",
"%*X", 20, 0x1234abcdu);
406 _PRINT_TEST(20,
" EDCB5433",
"%*X", 20, -0x1234abcdu);
407 _PRINT_TEST(20,
" x",
"%*c", 20,
'x');
409 _PRINT_TEST(12,
"Hallo heimur",
"%.20s",
"Hallo heimur");
410 _PRINT_TEST(20,
"00000000000000001024",
"%.20d", 1024);
411 _PRINT_TEST(21,
"-00000000000000001024",
"%.20d", -1024);
412 _PRINT_TEST(20,
"00000000000000001024",
"%.20i", 1024);
413 _PRINT_TEST(21,
"-00000000000000001024",
"%.20i", -1024);
414 _PRINT_TEST(20,
"00000000000000001024",
"%.20u", 1024u);
415 _PRINT_TEST(20,
"00000000004294966272",
"%.20u", -1024u);
416 _PRINT_TEST(20,
"00000000000000000777",
"%.20o", 0777u);
417 _PRINT_TEST(20,
"00000000037777777001",
"%.20o", -0777u);
418 _PRINT_TEST(20,
"0000000000001234abcd",
"%.20x", 0x1234abcdu);
419 _PRINT_TEST(20,
"000000000000edcb5433",
"%.20x", -0x1234abcdu);
420 _PRINT_TEST(20,
"0000000000001234ABCD",
"%.20X", 0x1234abcdu);
421 _PRINT_TEST(20,
"000000000000EDCB5433",
"%.20X", -0x1234abcdu);
423 _PRINT_TEST(20,
" Hallo",
"%20.5s",
"Hallo heimur");
424 _PRINT_TEST(20,
" 01024",
"%20.5d", 1024);
425 _PRINT_TEST(20,
" -01024",
"%20.5d", -1024);
426 _PRINT_TEST(20,
" 01024",
"%20.5i", 1024);
427 _PRINT_TEST(20,
" -01024",
"%20.5i", -1024);
428 _PRINT_TEST(20,
" 01024",
"%20.5u", 1024u);
429 _PRINT_TEST(20,
" 4294966272",
"%20.5u", -1024u);
430 _PRINT_TEST(20,
" 00777",
"%20.5o", 0777u);
431 _PRINT_TEST(20,
" 37777777001",
"%20.5o", -0777u);
432 _PRINT_TEST(20,
" 1234abcd",
"%20.5x", 0x1234abcdu);
433 _PRINT_TEST(20,
" 00edcb5433",
"%20.10x", -0x1234abcdu);
434 _PRINT_TEST(20,
" 1234ABCD",
"%20.5X", 0x1234abcdu);
435 _PRINT_TEST(20,
" 00EDCB5433",
"%20.10X", -0x1234abcdu);
437 _PRINT_TEST(20,
" 01024",
"%020.5d", 1024);
438 _PRINT_TEST(20,
" -01024",
"%020.5d", -1024);
439 _PRINT_TEST(20,
" 01024",
"%020.5i", 1024);
440 _PRINT_TEST(20,
" -01024",
"%020.5i", -1024);
441 _PRINT_TEST(20,
" 01024",
"%020.5u", 1024u);
442 _PRINT_TEST(20,
" 4294966272",
"%020.5u", -1024u);
443 _PRINT_TEST(20,
" 00777",
"%020.5o", 0777u);
444 _PRINT_TEST(20,
" 37777777001",
"%020.5o", -0777u);
445 _PRINT_TEST(20,
" 1234abcd",
"%020.5x", 0x1234abcdu);
446 _PRINT_TEST(20,
" 00edcb5433",
"%020.10x", -0x1234abcdu);
447 _PRINT_TEST(20,
" 1234ABCD",
"%020.5X", 0x1234abcdu);
448 _PRINT_TEST(20,
" 00EDCB5433",
"%020.10X", -0x1234abcdu);
450 _PRINT_TEST(0,
"",
"%.0s",
"Hallo heimur");
451 _PRINT_TEST(20,
" ",
"%20.0s",
"Hallo heimur");
452 _PRINT_TEST(0,
"",
"%.s",
"Hallo heimur");
453 _PRINT_TEST(20,
" ",
"%20.s",
"Hallo heimur");
454 _PRINT_TEST(20,
" 1024",
"%20.0d", 1024);
455 _PRINT_TEST(20,
" -1024",
"%20.d", -1024);
456 _PRINT_TEST(20,
" ",
"%20.d", 0);
457 _PRINT_TEST(20,
" 1024",
"%20.0i", 1024);
458 _PRINT_TEST(20,
" -1024",
"%20.i", -1024);
459 _PRINT_TEST(20,
" ",
"%20.i", 0);
460 _PRINT_TEST(20,
" 1024",
"%20.u", 1024u);
461 _PRINT_TEST(20,
" 4294966272",
"%20.0u", -1024u);
462 _PRINT_TEST(20,
" ",
"%20.u", 0u);
463 _PRINT_TEST(20,
" 777",
"%20.o", 0777u);
464 _PRINT_TEST(20,
" 37777777001",
"%20.0o", -0777u);
465 _PRINT_TEST(20,
" ",
"%20.o", 0u);
466 _PRINT_TEST(20,
" 1234abcd",
"%20.x", 0x1234abcdu);
467 _PRINT_TEST(20,
" edcb5433",
"%20.0x", -0x1234abcdu);
468 _PRINT_TEST(20,
" ",
"%20.x", 0u);
469 _PRINT_TEST(20,
" 1234ABCD",
"%20.X", 0x1234abcdu);
470 _PRINT_TEST(20,
" EDCB5433",
"%20.0X", -0x1234abcdu);
471 _PRINT_TEST(20,
" ",
"%20.X", 0u);
479 _PRINT_TEST(20,
"Hallo ",
"% -0+*.*s", 20, 5,
"Hallo heimur");
480 _PRINT_TEST(20,
"+01024 ",
"% -0+*.*d", 20, 5, 1024);
481 _PRINT_TEST(20,
"-01024 ",
"% -0+*.*d", 20, 5, -1024);
482 _PRINT_TEST(20,
"+01024 ",
"% -0+*.*i", 20, 5, 1024);
483 _PRINT_TEST(20,
"-01024 ",
"% 0-+*.*i", 20, 5, -1024);
484 _PRINT_TEST(20,
"01024 ",
"% 0-+*.*u", 20, 5, 1024u);
485 _PRINT_TEST(20,
"4294966272 ",
"% 0-+*.*u", 20, 5, -1024u);
486 _PRINT_TEST(20,
"00777 ",
"%+ -0*.*o", 20, 5, 0777u);
487 _PRINT_TEST(20,
"37777777001 ",
"%+ -0*.*o", 20, 5, -0777u);
488 _PRINT_TEST(20,
"1234abcd ",
"%+ -0*.*x", 20, 5, 0x1234abcdu);
489 _PRINT_TEST(20,
"00edcb5433 ",
"%+ -0*.*x", 20, 10, -0x1234abcdu);
490 _PRINT_TEST(20,
"1234ABCD ",
"% -+0*.*X", 20, 5, 0x1234abcdu);
491 _PRINT_TEST(20,
"00EDCB5433 ",
"% -+0*.*X", 20, 10, -0x1234abcdu);
493#pragma GCC diagnostic pop
502 for (
int k = 0; k < 1; ++k)
#define assert(expression)
static char format[MAX_NAME]
#define TEST_DEFINE(_name)
Define a test function to be run by TEST_ALL().
#define TEST_ASSERT(cond)
Assert a condition in a test.
#define ERR
Integer error value.
__UINTMAX_TYPE__ uintmax_t
__PTRDIFF_TYPE__ ptrdiff_t
int snprintf(char *_RESTRICT s, size_t n, const char *_RESTRICT format,...)
#define va_start(ap, parmN)
__builtin_va_list va_list
_PUBLIC int vsnprintf(char *_RESTRICT s, size_t n, const char *_RESTRICT format, va_list arg)
_PUBLIC size_t strlen(const char *s)