1// SPDX-License-Identifier: GPL-3.0-or-later
2
3#include "test_engine_impl.h"
4
5#include <mos_stdio.h>
6
7static char buffer[2048] = { 0 };
8
9MOS_TEST_DEFINE_CONDITION(printf_tests_enable_posix, "POSIX exts") = false;
10MOS_TEST_DEFINE_CONDITION(printf_tests_enable_floats, "floating points") = false;
11MOS_TEST_DEFINE_CONDITION(printf_tests_enable_egp, "e, g, p tests") = false;
12MOS_TEST_DEFINE_CONDITION(printf_tests_enable_oxX, "o, x, X tests") = true;
13
14#define PRINTF_TEST(expected, format, ...) \
15 do \
16 { \
17 if (MOS_TEST_CURRENT_TEST_SKIPPED) \
18 { \
19 MOS_TEST_SKIP(); \
20 break; \
21 } \
22 sprintf(buffer, format __VA_OPT__(, ) __VA_ARGS__); \
23 MOS_TEST_CHECK_STRING(buffer, expected); \
24 } while (0)
25
26MOS_TEST_CASE(percent_sign)
27{
28 MOS_WARNING_PUSH;
29 MOS_WARNING_DISABLE("-Wformat");
30 MOS_WARNING_DISABLE("-Wformat-zero-length");
31 {
32 PRINTF_TEST("", "", );
33 PRINTF_TEST("%", "%%", );
34 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("", "%", ), "format string is incomplete");
35 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("incomplete ", "incomplete %", ), "incomplete format specifier");
36 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("incomplete 100", "incomplete %d%", 100), "incomplete format specifier");
37 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("incomplete 'abcde' %", "incomplete '%s' %%%", "abcde"), "incomplete format specifier");
38 }
39 MOS_WARNING_POP;
40}
41
42MOS_TEST_CASE(simple_string)
43{
44 PRINTF_TEST("a", "a", );
45 PRINTF_TEST("very long string", "very long string", );
46 PRINTF_TEST("d6c40101-371d-473e-8880-464eeed9541cd6c40101-371d-473e-8880-464eeed9541cd6c40101-371d-473e-8880-464eeed9541cd6c40101-371d-473e-8880",
47 "d6c40101-371d-473e-8880-464eeed9541cd6c40101-371d-473e-8880-464eeed9541cd6c40101-371d-473e-8880-464eeed9541cd6c40101-371d-473e-8880", );
48}
49
50MOS_TEST_CASE(integer_no_precision)
51{
52 PRINTF_TEST("-123", "%d", -123);
53 PRINTF_TEST("0", "%d", 0);
54 PRINTF_TEST("123", "%d", 123);
55
56 // With sign and space
57 // Negative numbers always have a sign.
58 PRINTF_TEST("-123", "% d", -123);
59 PRINTF_TEST("-123", "%+d", -123);
60
61 // Positive numbers have a plus if a plus is specified, or a space if a space is specified.
62 PRINTF_TEST("+123", "%+d", 123);
63 PRINTF_TEST(" 123", "% d", 123);
64 PRINTF_TEST("-123", "% d", -123);
65
66 // zero is positive !!!!
67 PRINTF_TEST("+0", "%+d", 0);
68 PRINTF_TEST(" 0", "% d", 0);
69
70 PRINTF_TEST("-0011", "%05i", -11);
71
72 // Minimum field width
73 PRINTF_TEST("123", "%3d", 123);
74 PRINTF_TEST(" 123", "%5d", 123);
75 PRINTF_TEST(" 123", "%6d", 123);
76 PRINTF_TEST(" 123", "%7d", 123);
77
78 // Minimum field width with sign
79 PRINTF_TEST("+123", "%+3d", 123);
80 PRINTF_TEST(" +123", "%+5d", 123);
81 PRINTF_TEST(" +123", "%+6d", 123);
82 PRINTF_TEST(" +123", "%+7d", 123);
83
84 PRINTF_TEST("-123", "%3d", -123);
85 PRINTF_TEST("-123", "%4d", -123);
86 PRINTF_TEST(" -123", "%5d", -123);
87 PRINTF_TEST(" -123", "%6d", -123);
88 PRINTF_TEST(" -123", "%7d", -123);
89
90 // Minimum field width with zero padding
91 PRINTF_TEST("123", "%03d", 123);
92 PRINTF_TEST("00123", "%05d", 123);
93 PRINTF_TEST("000123", "%06d", 123);
94 PRINTF_TEST("0000123", "%07d", 123);
95
96 // Minimum field width with zero padding and sign
97 PRINTF_TEST("+123", "%+03d", 123);
98 PRINTF_TEST("+0123", "%+05d", 123);
99 PRINTF_TEST("+00123", "%+06d", 123);
100 PRINTF_TEST("+000123", "%+07d", 123);
101
102 // Minimum field width with zero padding and sign
103 PRINTF_TEST("-123", "%03d", -123);
104 PRINTF_TEST("-0123", "%05d", -123);
105 PRINTF_TEST("-00123", "%06d", -123);
106 PRINTF_TEST("-000123", "%07d", -123);
107}
108
109MOS_TEST_CASE(integer_with_precision)
110{
111 PRINTF_TEST("-00011", "%.5i", -11);
112
113 // Precision
114 PRINTF_TEST("123", "%.0d", 123);
115 PRINTF_TEST("123", "%.1d", 123);
116 PRINTF_TEST("123", "%.2d", 123);
117 PRINTF_TEST("123", "%.3d", 123);
118 PRINTF_TEST("0123", "%.4d", 123);
119 PRINTF_TEST("00123", "%.5d", 123);
120 PRINTF_TEST("000123", "%.6d", 123);
121 PRINTF_TEST("0000123", "%.7d", 123);
122 PRINTF_TEST("00000123", "%.8d", 123);
123
124 // Precision with sign
125 PRINTF_TEST("+123", "%+.0d", 123);
126 PRINTF_TEST("+123", "%+.1d", 123);
127 PRINTF_TEST("+123", "%+.2d", 123);
128 PRINTF_TEST("+123", "%+.3d", 123);
129 PRINTF_TEST("+0123", "%+.4d", 123);
130 PRINTF_TEST("+00123", "%+.5d", 123);
131 PRINTF_TEST("+000123", "%+.6d", 123);
132 PRINTF_TEST("+0000123", "%+.7d", 123);
133 PRINTF_TEST("+00000123", "%+.8d", 123);
134
135 // ! "If a precision is given with a numeric conversion (d, i, o, u, x, and X), the 0 flag is ignored."
136 MOS_WARNING_PUSH
137 MOS_WARNING_DISABLE("-Wformat");
138 {
139 // Precision with zero padding
140 PRINTF_TEST("123", "%0.0d", 123);
141 PRINTF_TEST("123", "%0.1d", 123);
142 PRINTF_TEST("123", "%0.2d", 123);
143 PRINTF_TEST("123", "%0.3d", 123);
144 PRINTF_TEST("0123", "%0.4d", 123);
145 PRINTF_TEST("00123", "%0.5d", 123);
146 PRINTF_TEST("000123", "%0.6d", 123);
147 PRINTF_TEST("0000123", "%0.7d", 123);
148 PRINTF_TEST("00000123", "%0.8d", 123);
149
150 // Precision with zero padding and sign
151 PRINTF_TEST("+123", "%0+.0d", 123);
152 PRINTF_TEST("+123", "%0+.1d", 123);
153 PRINTF_TEST("+123", "%0+.2d", 123);
154 PRINTF_TEST("+123", "%0+.3d", 123);
155 PRINTF_TEST("+0123", "%0+.4d", 123);
156 PRINTF_TEST("+00123", "%0+.5d", 123);
157 PRINTF_TEST("+000123", "%0+.6d", 123);
158 PRINTF_TEST("+0000123", "%0+.7d", 123);
159 PRINTF_TEST("+00000123", "%0+.8d", 123);
160
161 PRINTF_TEST("+123", "%+0.0d", 123);
162 PRINTF_TEST("+123", "%+0.1d", 123);
163 PRINTF_TEST("+123", "%+0.2d", 123);
164 PRINTF_TEST("+123", "%+0.3d", 123);
165 PRINTF_TEST("+0123", "%+0.4d", 123);
166 PRINTF_TEST("+00123", "%+0.5d", 123);
167 PRINTF_TEST("+000123", "%+0.6d", 123);
168 PRINTF_TEST("+0000123", "%+0.7d", 123);
169 PRINTF_TEST("+00000123", "%+0.8d", 123);
170 }
171 MOS_WARNING_POP
172
173 // Precision with space (sign placeholder)
174 PRINTF_TEST(" 123", "% .0d", 123);
175 PRINTF_TEST(" 123", "% .1d", 123);
176 PRINTF_TEST(" 123", "% .2d", 123);
177 PRINTF_TEST(" 123", "% .3d", 123);
178 PRINTF_TEST(" 0123", "% .4d", 123);
179 PRINTF_TEST(" 00123", "% .5d", 123);
180 PRINTF_TEST(" 000123", "% .6d", 123);
181 PRINTF_TEST(" 0000123", "% .7d", 123);
182 PRINTF_TEST(" 00000123", "% .8d", 123);
183
184 // Precision with width
185 PRINTF_TEST("123", "%1.0d", 123);
186 PRINTF_TEST("123", "%1.1d", 123);
187 PRINTF_TEST("123", "%1.2d", 123);
188 PRINTF_TEST("123", "%1.3d", 123);
189 PRINTF_TEST("0123", "%1.4d", 123);
190 PRINTF_TEST("00123", "%1.5d", 123);
191 PRINTF_TEST("000123", "%1.6d", 123);
192 PRINTF_TEST("0000123", "%1.7d", 123);
193 PRINTF_TEST("00000123", "%1.8d", 123);
194
195 PRINTF_TEST("123", "%2.0d", 123);
196 PRINTF_TEST("123", "%2.1d", 123);
197 PRINTF_TEST("123", "%2.2d", 123);
198 PRINTF_TEST("123", "%2.3d", 123);
199 PRINTF_TEST("0123", "%2.4d", 123);
200 PRINTF_TEST("00123", "%2.5d", 123);
201 PRINTF_TEST("000123", "%2.6d", 123);
202 PRINTF_TEST("0000123", "%2.7d", 123);
203 PRINTF_TEST("00000123", "%2.8d", 123);
204
205 PRINTF_TEST("123", "%3.0d", 123);
206 PRINTF_TEST("123", "%3.1d", 123);
207 PRINTF_TEST("123", "%3.2d", 123);
208 PRINTF_TEST("123", "%3.3d", 123);
209 PRINTF_TEST("0123", "%3.4d", 123);
210 PRINTF_TEST("00123", "%3.5d", 123);
211 PRINTF_TEST("000123", "%3.6d", 123);
212 PRINTF_TEST("0000123", "%3.7d", 123);
213 PRINTF_TEST("00000123", "%3.8d", 123);
214
215 PRINTF_TEST(" 123", "%4.0d", 123);
216 PRINTF_TEST(" 123", "%4.1d", 123);
217 PRINTF_TEST(" 123", "%4.2d", 123);
218 PRINTF_TEST(" 123", "%4.3d", 123);
219 PRINTF_TEST("0123", "%4.4d", 123);
220 PRINTF_TEST("00123", "%4.5d", 123);
221 PRINTF_TEST("000123", "%4.6d", 123);
222 PRINTF_TEST("0000123", "%4.7d", 123);
223 PRINTF_TEST("00000123", "%4.8d", 123);
224
225 PRINTF_TEST(" 123", "%5.0d", 123);
226 PRINTF_TEST(" 123", "%5.1d", 123);
227 PRINTF_TEST(" 123", "%5.2d", 123);
228 PRINTF_TEST(" 123", "%5.3d", 123);
229 PRINTF_TEST(" 0123", "%5.4d", 123);
230 PRINTF_TEST("00123", "%5.5d", 123);
231 PRINTF_TEST("000123", "%5.6d", 123);
232 PRINTF_TEST("0000123", "%5.7d", 123);
233 PRINTF_TEST("00000123", "%5.8d", 123);
234
235 PRINTF_TEST(" 123", "%6.0d", 123);
236 PRINTF_TEST(" 123", "%6.1d", 123);
237 PRINTF_TEST(" 123", "%6.2d", 123);
238 PRINTF_TEST(" 123", "%6.3d", 123);
239 PRINTF_TEST(" 0123", "%6.4d", 123);
240 PRINTF_TEST(" 00123", "%6.5d", 123);
241 PRINTF_TEST("000123", "%6.6d", 123);
242 PRINTF_TEST("0000123", "%6.7d", 123);
243 PRINTF_TEST("00000123", "%6.8d", 123);
244
245 PRINTF_TEST(" 123", "%7.0d", 123);
246 PRINTF_TEST(" 123", "%7.1d", 123);
247 PRINTF_TEST(" 123", "%7.2d", 123);
248 PRINTF_TEST(" 123", "%7.3d", 123);
249 PRINTF_TEST(" 0123", "%7.4d", 123);
250 PRINTF_TEST(" 00123", "%7.5d", 123);
251 PRINTF_TEST(" 000123", "%7.6d", 123);
252 PRINTF_TEST("0000123", "%7.7d", 123);
253 PRINTF_TEST("00000123", "%7.8d", 123);
254}
255
256MOS_TEST_CASE(integer_left_justified)
257{
258 MOS_WARNING_PUSH
259 MOS_WARNING_DISABLE("-Wformat")
260 {
261 // Left-justified with zero padding (ignored, warning expected)
262 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("123", "%0-d", 123), "expected a warning about zero-padding");
263 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-123", "%0-d", -123), "expected a warning about zero-padding");
264 }
265 MOS_WARNING_POP
266
267 // Left-justified with sign
268 PRINTF_TEST("+123", "%+-d", 123);
269
270 // Left-justified with space (sign placeholder)
271 PRINTF_TEST(" 123", "% -d", 123);
272
273 // Left-justified with width
274 PRINTF_TEST("123", "%-1d", 123);
275 PRINTF_TEST("123", "%-2d", 123);
276 PRINTF_TEST("123", "%-3d", 123);
277 PRINTF_TEST("123 ", "%-4d", 123);
278 PRINTF_TEST("123 ", "%-5d", 123);
279 PRINTF_TEST("123 ", "%-6d", 123);
280 PRINTF_TEST("123 ", "%-7d", 123);
281
282 // Left-justified with width and sign
283 PRINTF_TEST("+123", "%-+1d", 123);
284 PRINTF_TEST("+123", "%-+2d", 123);
285 PRINTF_TEST("+123", "%-+3d", 123);
286 PRINTF_TEST("+123", "%-+4d", 123);
287 PRINTF_TEST("+123 ", "%-+5d", 123);
288 PRINTF_TEST("+123 ", "%-+6d", 123);
289 PRINTF_TEST("+123 ", "%-+7d", 123);
290 PRINTF_TEST("+123 ", "%-+8d", 123);
291
292 // Left-justified with width and space (sign placeholder)
293 PRINTF_TEST(" 123", "% -1d", 123);
294 PRINTF_TEST(" 123", "% -2d", 123);
295 PRINTF_TEST(" 123", "% -3d", 123);
296 PRINTF_TEST(" 123", "% -4d", 123);
297 PRINTF_TEST(" 123 ", "% -5d", 123);
298 PRINTF_TEST(" 123 ", "% -6d", 123);
299 PRINTF_TEST(" 123 ", "% -7d", 123);
300 PRINTF_TEST(" 123 ", "% -8d", 123);
301
302 // Left-justified with precision
303 PRINTF_TEST("123", "%-.0d", 123);
304 PRINTF_TEST("123", "%-.1d", 123);
305 PRINTF_TEST("123", "%-.2d", 123);
306 PRINTF_TEST("123", "%-.3d", 123);
307 PRINTF_TEST("0123", "%-.4d", 123);
308 PRINTF_TEST("00123", "%-.5d", 123);
309 PRINTF_TEST("000123", "%-.6d", 123);
310 PRINTF_TEST("0000123", "%-.7d", 123);
311 PRINTF_TEST("00000123", "%-.8d", 123);
312
313 // Left-justified with precision and width
314 PRINTF_TEST("123", "%-1.0d", 123);
315 PRINTF_TEST("123", "%-1.1d", 123);
316 PRINTF_TEST("123", "%-1.2d", 123);
317 PRINTF_TEST("123", "%-1.3d", 123);
318 PRINTF_TEST("0123", "%-1.4d", 123);
319 PRINTF_TEST("00123", "%-1.5d", 123);
320 PRINTF_TEST("000123", "%-1.6d", 123);
321 PRINTF_TEST("0000123", "%-1.7d", 123);
322 PRINTF_TEST("00000123", "%-1.8d", 123);
323
324 PRINTF_TEST("123", "%-2.0d", 123);
325 PRINTF_TEST("123", "%-2.1d", 123);
326 PRINTF_TEST("123", "%-2.2d", 123);
327 PRINTF_TEST("123", "%-2.3d", 123);
328 PRINTF_TEST("0123", "%-2.4d", 123);
329 PRINTF_TEST("00123", "%-2.5d", 123);
330 PRINTF_TEST("000123", "%-2.6d", 123);
331 PRINTF_TEST("0000123", "%-2.7d", 123);
332 PRINTF_TEST("00000123", "%-2.8d", 123);
333
334 PRINTF_TEST("123", "%-3.0d", 123);
335 PRINTF_TEST("123", "%-3.1d", 123);
336 PRINTF_TEST("123", "%-3.2d", 123);
337 PRINTF_TEST("123", "%-3.3d", 123);
338 PRINTF_TEST("0123", "%-3.4d", 123);
339 PRINTF_TEST("00123", "%-3.5d", 123);
340 PRINTF_TEST("000123", "%-3.6d", 123);
341 PRINTF_TEST("0000123", "%-3.7d", 123);
342 PRINTF_TEST("00000123", "%-3.8d", 123);
343
344 PRINTF_TEST("123 ", "%-4.0d", 123);
345 PRINTF_TEST("123 ", "%-4.1d", 123);
346 PRINTF_TEST("123 ", "%-4.2d", 123);
347 PRINTF_TEST("123 ", "%-4.3d", 123);
348 PRINTF_TEST("0123", "%-4.4d", 123);
349 PRINTF_TEST("00123", "%-4.5d", 123);
350 PRINTF_TEST("000123", "%-4.6d", 123);
351 PRINTF_TEST("0000123", "%-4.7d", 123);
352 PRINTF_TEST("00000123", "%-4.8d", 123);
353
354 PRINTF_TEST("123 ", "%-5.0d", 123);
355 PRINTF_TEST("123 ", "%-5.1d", 123);
356 PRINTF_TEST("123 ", "%-5.2d", 123);
357 PRINTF_TEST("123 ", "%-5.3d", 123);
358 PRINTF_TEST("0123 ", "%-5.4d", 123);
359 PRINTF_TEST("00123", "%-5.5d", 123);
360 PRINTF_TEST("000123", "%-5.6d", 123);
361 PRINTF_TEST("0000123", "%-5.7d", 123);
362 PRINTF_TEST("00000123", "%-5.8d", 123);
363
364 PRINTF_TEST("123 ", "%-6.0d", 123);
365 PRINTF_TEST("123 ", "%-6.1d", 123);
366 PRINTF_TEST("123 ", "%-6.2d", 123);
367 PRINTF_TEST("123 ", "%-6.3d", 123);
368 PRINTF_TEST("0123 ", "%-6.4d", 123);
369 PRINTF_TEST("00123 ", "%-6.5d", 123);
370 PRINTF_TEST("000123", "%-6.6d", 123);
371 PRINTF_TEST("0000123", "%-6.7d", 123);
372 PRINTF_TEST("00000123", "%-6.8d", 123);
373}
374
375MOS_TEST_CASE(integer_extreme_case)
376{
377 PRINTF_TEST("2147483647", "%d", 2147483647);
378 PRINTF_TEST("-2147483648", "%d", -2147483647 - 1);
379 PRINTF_TEST("0", "%d", +0);
380 PRINTF_TEST("0", "%d", 0);
381 PRINTF_TEST("0", "%d", -0);
382}
383
384// https://github.com/BartMassey/printf-tests/blob/master/drivers/c/testcases.c
385// Licensed under the GPLv2 or later.
386MOS_WARNING_PUSH
387MOS_WARNING_DISABLE("-Wformat")
388MOS_WARNING_DISABLE("-Wformat-extra-args")
389MOS_TEST_CASE(printf_tests_github)
390{
391 PRINTF_TEST(" 00004", "%10.5d", 4);
392 PRINTF_TEST(" 42", "% d", 42);
393 PRINTF_TEST("-42", "% d", -42);
394 PRINTF_TEST(" 42", "% 5d", 42);
395 PRINTF_TEST(" -42", "% 5d", -42);
396 PRINTF_TEST(" 42", "% 15d", 42);
397 PRINTF_TEST(" -42", "% 15d", -42);
398 PRINTF_TEST("+42", "%+d", 42);
399 PRINTF_TEST("-42", "%+d", -42);
400 PRINTF_TEST(" +42", "%+5d", 42);
401 PRINTF_TEST(" -42", "%+5d", -42);
402 PRINTF_TEST("1234", "%3d", 1234);
403 PRINTF_TEST(" +42", "%+15d", 42);
404 PRINTF_TEST(" -42", "%+15d", -42);
405 PRINTF_TEST("42", "%0d", 42);
406 PRINTF_TEST("-42", "%0d", -42);
407 PRINTF_TEST("00042", "%05d", 42);
408 PRINTF_TEST("-0042", "%05d", -42);
409 PRINTF_TEST("000000000000042", "%015d", 42);
410 PRINTF_TEST("-00000000000042", "%015d", -42);
411 PRINTF_TEST("42", "%-d", 42);
412 PRINTF_TEST("-42", "%-d", -42);
413 PRINTF_TEST("2", "%-1d", 2);
414 PRINTF_TEST("42 ", "%-5d", 42);
415 PRINTF_TEST("-42 ", "%-5d", -42);
416 PRINTF_TEST("42 ", "%-15d", 42);
417 PRINTF_TEST("-42 ", "%-15d", -42);
418 PRINTF_TEST("10", "%d", 10);
419 PRINTF_TEST("+10+", "+%d+", 10);
420 PRINTF_TEST("1024", "%d", 1024);
421 PRINTF_TEST("-1024", "%d", -1024);
422 PRINTF_TEST(" 0000000000000000000000000000000000000001", "% .40d", 1);
423
424 PRINTF_TEST("a", "%c", 'a');
425 PRINTF_TEST(" ", "%c", 32);
426 PRINTF_TEST("$", "%c", 36);
427
428 PRINTF_TEST(" a", "%3c", 'a');
429
430 PRINTF_TEST("1024", "%i", 1024);
431 PRINTF_TEST("-1024", "%i", -1024);
432 PRINTF_TEST("-1", "%-i", -1);
433 PRINTF_TEST("1", "%-i", 1);
434 PRINTF_TEST("+1", "%+i", 1);
435 PRINTF_TEST("1024", "%u", 1024);
436 PRINTF_TEST("4294967295", "%u", -1);
437
438 PRINTF_TEST("+hello+", "+%s+", "hello");
439 PRINTF_TEST("%%%%", "%s", "%%%%");
440 PRINTF_TEST("hello", "hello", );
441 PRINTF_TEST("Hallo heimur", "Hallo heimur", );
442 PRINTF_TEST("Hallo heimur", "%s", "Hallo heimur");
443 PRINTF_TEST("foo", "%.3s", "foobar");
444 PRINTF_TEST(" foo", "%*s", 4, "foo");
445
446 // lld
447 PRINTF_TEST(" +100", "%+8lld", 100LL);
448 PRINTF_TEST("+00000100", "%+.8lld", 100LL);
449 PRINTF_TEST(" +00000100", "%+10.8lld", 100LL);
450 PRINTF_TEST("-00100", "%-1.5lld", -100LL);
451 PRINTF_TEST(" 100", "%5lld", 100LL);
452 PRINTF_TEST(" -100", "%5lld", -100LL);
453 PRINTF_TEST("100 ", "%-5lld", 100LL);
454 PRINTF_TEST("-100 ", "%-5lld", -100LL);
455 PRINTF_TEST("00100", "%-.5lld", 100LL);
456 PRINTF_TEST("-00100", "%-.5lld", -100LL);
457 PRINTF_TEST("00100 ", "%-8.5lld", 100LL);
458 PRINTF_TEST("-00100 ", "%-8.5lld", -100LL);
459 PRINTF_TEST("00100", "%05lld", 100LL);
460 PRINTF_TEST("-0100", "%05lld", -100LL);
461 PRINTF_TEST(" 100", "% lld", 100LL);
462 PRINTF_TEST("-100", "% lld", -100LL);
463 PRINTF_TEST(" 100", "% 5lld", 100LL);
464 PRINTF_TEST(" -100", "% 5lld", -100LL);
465 PRINTF_TEST(" 00100", "% .5lld", 100LL);
466 PRINTF_TEST("-00100", "% .5lld", -100LL);
467 PRINTF_TEST(" 00100", "% 8.5lld", 100LL);
468 PRINTF_TEST(" -00100", "% 8.5lld", -100LL);
469 PRINTF_TEST("", "%.0lld", 0LL);
470
471 PRINTF_TEST("0000000000000000000000000000000000000001", "%.40lld", 1LL);
472 PRINTF_TEST(" 0000000000000000000000000000000000000001", "% .40lld", 1LL);
473
474 // star
475 PRINTF_TEST(" Hallo", "%*s", 20, "Hallo");
476 PRINTF_TEST(" 1024", "%*d", 20, 1024);
477 PRINTF_TEST(" -1024", "%*d", 20, -1024);
478 PRINTF_TEST(" 1024", "%*i", 20, 1024);
479 PRINTF_TEST(" -1024", "%*i", 20, -1024);
480 PRINTF_TEST(" 1024", "%*u", 20, 1024);
481 PRINTF_TEST(" 4294966272", "%*u", 20, 4294966272U);
482 PRINTF_TEST(" x", "%*c", 20, 'x');
483
484 PRINTF_TEST("hi x\\n", "%*sx\\n", -3, "hi");
485
486 PRINTF_TEST("f", "%.1s", "foo");
487 PRINTF_TEST("f", "%.*s", 1, "foo");
488 PRINTF_TEST("foo ", "%*s", -5, "foo");
489 PRINTF_TEST("%0", "%%0", );
490 PRINTF_TEST("4294966272", "%u", 4294966272U);
491 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("%H", "%H", -1), "unknown conversion specifier");
492 PRINTF_TEST("x", "%c", 'x');
493 PRINTF_TEST("%", "%%", );
494 PRINTF_TEST("+1024", "%+d", 1024);
495 PRINTF_TEST("-1024", "%+d", -1024);
496 PRINTF_TEST("+1024", "%+i", 1024);
497 PRINTF_TEST("-1024", "%+i", -1024);
498 PRINTF_TEST(" 1024", "% d", 1024);
499 PRINTF_TEST("-1024", "% d", -1024);
500 PRINTF_TEST(" 1024", "% i", 1024);
501 PRINTF_TEST("-1024", "% i", -1024);
502 PRINTF_TEST("Hallo heimur", "%1s", "Hallo heimur");
503 PRINTF_TEST("1024", "%1d", 1024);
504 PRINTF_TEST("-1024", "%1d", -1024);
505 PRINTF_TEST("1024", "%1i", 1024);
506 PRINTF_TEST("-1024", "%1i", -1024);
507 PRINTF_TEST("1024", "%1u", 1024);
508 PRINTF_TEST("4294966272", "%1u", 4294966272U);
509 PRINTF_TEST("x", "%1c", 'x');
510 PRINTF_TEST(" Hallo", "%20s", "Hallo");
511 PRINTF_TEST(" 1024", "%20d", 1024);
512 PRINTF_TEST(" -1024", "%20d", -1024);
513 PRINTF_TEST(" 1024", "%20i", 1024);
514 PRINTF_TEST(" -1024", "%20i", -1024);
515 PRINTF_TEST(" 1024", "%20u", 1024);
516 PRINTF_TEST(" 4294966272", "%20u", 4294966272U);
517 PRINTF_TEST(" x", "%20c", 'x');
518 PRINTF_TEST("Hallo ", "%-20s", "Hallo");
519 PRINTF_TEST("1024 ", "%-20d", 1024);
520 PRINTF_TEST("-1024 ", "%-20d", -1024);
521 PRINTF_TEST("1024 ", "%-20i", 1024);
522 PRINTF_TEST("-1024 ", "%-20i", -1024);
523 PRINTF_TEST("1024 ", "%-20u", 1024);
524 PRINTF_TEST("4294966272 ", "%-20u", 4294966272U);
525 PRINTF_TEST("x ", "%-20c", 'x');
526 PRINTF_TEST("00000000000000001024", "%020d", 1024);
527 PRINTF_TEST("-0000000000000001024", "%020d", -1024);
528 PRINTF_TEST("00000000000000001024", "%020i", 1024);
529 PRINTF_TEST("-0000000000000001024", "%020i", -1024);
530 PRINTF_TEST("00000000000000001024", "%020u", 1024);
531 PRINTF_TEST("00000000004294966272", "%020u", 4294966272U);
532 PRINTF_TEST("Hallo heimur", "%.20s", "Hallo heimur");
533 PRINTF_TEST("00000000000000001024", "%.20d", 1024);
534 PRINTF_TEST("-00000000000000001024", "%.20d", -1024);
535 PRINTF_TEST("00000000000000001024", "%.20i", 1024);
536 PRINTF_TEST("-00000000000000001024", "%.20i", -1024);
537 PRINTF_TEST("00000000000000001024", "%.20u", 1024);
538 PRINTF_TEST("00000000004294966272", "%.20u", 4294966272U);
539 PRINTF_TEST(" Hallo", "%20.5s", "Hallo heimur");
540 PRINTF_TEST(" 01024", "%20.5d", 1024);
541 PRINTF_TEST(" -01024", "%20.5d", -1024);
542 PRINTF_TEST(" 01024", "%20.5i", 1024);
543 PRINTF_TEST(" -01024", "%20.5i", -1024);
544 PRINTF_TEST(" 01024", "%20.5u", 1024);
545 PRINTF_TEST(" 4294966272", "%20.5u", 4294966272U);
546 PRINTF_TEST(" 01024", "%020.5d", 1024);
547 PRINTF_TEST(" -01024", "%020.5d", -1024);
548 PRINTF_TEST(" 01024", "%020.5i", 1024);
549 PRINTF_TEST(" -01024", "%020.5i", -1024);
550 PRINTF_TEST(" 01024", "%020.5u", 1024);
551 PRINTF_TEST(" 4294966272", "%020.5u", 4294966272U);
552 PRINTF_TEST("", "%.0s", "Hallo heimur");
553 PRINTF_TEST(" ", "%20.0s", "Hallo heimur");
554 PRINTF_TEST("", "%.s", "Hallo heimur");
555 PRINTF_TEST(" ", "%20.s", "Hallo heimur");
556 PRINTF_TEST(" 1024", "%20.0d", 1024);
557 PRINTF_TEST(" -1024", "%20.d", -1024);
558 PRINTF_TEST(" ", "%20.d", 0);
559 PRINTF_TEST(" 1024", "%20.0i", 1024);
560 PRINTF_TEST(" -1024", "%20.i", -1024);
561 PRINTF_TEST(" ", "%20.i", 0);
562 PRINTF_TEST(" 1024", "%20.u", 1024);
563 PRINTF_TEST(" 4294966272", "%20.0u", 4294966272U);
564 PRINTF_TEST(" ", "%20.u", 0U);
565
566 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("%w", "%w", -1), "unknown format specifier 'w'");
567 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("%b", "%b", ), "unknown format specifier 'b'");
568 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("%(foo", "%(foo", ), "unknown format specifier");
569 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("%_1lld", "%_1lld", 100LL), "unknown format specifier '_'");
570 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("42", "%-0d", 42), "0 ignored by '-'");
571 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-42", "%-0d", -42), "0 ignored by '-'");
572 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("42 ", "%-05d", 42), "0 ignored by '-'");
573 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-42 ", "%-05d", -42), "0 ignored by '-'");
574 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("42 ", "%-015d", 42), "0 ignored by '-'");
575 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-42 ", "%-015d", -42), "0 ignored by '-'");
576 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("42", "%0-d", 42), "0 ignored by '-'");
577 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-42", "%0-d", -42), "0 ignored by '-'");
578 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("42 ", "%0-5d", 42), "0 ignored by '-'");
579 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-42 ", "%0-5d", -42), "0 ignored by '-'");
580 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("42 ", "%0-15d", 42), "0 ignored by '-'");
581 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-42 ", "%0-15d", -42), "0 ignored by '-'");
582 MOS_TEST_EXPECT_WARNING(PRINTF_TEST(" -0000000000000000000001", "%+#25.22lld", -1LL), "# flag ignored in d");
583 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("Hallo heimur", "%+s", "Hallo heimur"), "+ flag ignored");
584 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1024", "%+u", 1024), "+ flag ignored");
585 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("4294966272", "%+u", 4294966272U), "+ flag ignored");
586 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("x", "%+c", 'x'), "+ flag ignored");
587 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("Hallo heimur", "% s", "Hallo heimur"), "' ' flag ignored");
588 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1024", "% u", 1024), "' ' flag ignored");
589 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("4294966272", "% u", 4294966272U), "' ' flag ignored");
590 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("x", "% c", 'x'), "' ' flag ignored");
591 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("+1024", "%+ d", 1024), "' ' flag ignored");
592 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-1024", "%+ d", -1024), "' ' flag ignored");
593 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("+1024", "%+ i", 1024), "' ' flag ignored");
594 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-1024", "%+ i", -1024), "' ' flag ignored");
595 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("Hallo ", "%0-20s", "Hallo"), "0 ignored");
596 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1024 ", "%0-20d", 1024), "0 ignored");
597 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-1024 ", "%0-20d", -1024), "0 ignored");
598 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1024 ", "%0-20i", 1024), "0 ignored");
599 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("-1024 ", "%0-20i", -1024), "0 ignored");
600 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1024 ", "%0-20u", 1024), "0 ignored");
601 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("4294966272 ", "%0-20u", 4294966272U), "0 ignored");
602 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("x ", "%-020c", 'x'), "0 ignored");
603 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("Hallo heimur", "%+ s", "Hallo heimur"), "+, ' ' flag ignored");
604 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("1024", "%+ u", 1024), "' ' flag ignored, + ignored");
605 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("4294966272", "%+ u", 4294966272U), "' ' flag ignored, + ignored");
606 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("x", "%+ c", 'x'), "' ' flag ignored, + ignored");
607 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("+01024 ", "% -0+*.*d", 20, 5, 1024), "' ' flag and 0 flag ignored");
608 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("-01024 ", "% -0+*.*d", 20, 5, -1024), "' ' flag and 0 flag ignored");
609 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("+01024 ", "% -0+*.*i", 20, 5, 1024), "' ' flag and 0 flag ignored");
610 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("-01024 ", "% 0-+*.*i", 20, 5, -1024), "' ' flag and 0 flag ignored");
611 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST(" 0018446744073709551615", "%#+25.22llu", -1LL), "#, + ignored in u");
612 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST(" 0018446744073709551615", "%#+25.22llu", -1LL), "#, + ignored in u");
613 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("+00100 ", "%#-+ 08.5lld", 100LL), "ignored 0 by -, ' ' by +, # in d");
614 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST(" 0000018446744073709551615", "%#+30.25llu", -1LL), "#, + ignored in u");
615 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("4294966272 ", "% 0-+*.*u", 20, 5, 4294966272U), "' ' and 0 ignored, + ignore in u");
616 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("01024 ", "% 0-+*.*u", 20, 5, 1024), "' ' and 0 ignored, + ignore in u");
617 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("Hallo ", "% -0+*.*s", 20, 5, "Hallo heimur"), "ignore 0 by -, ' ' by +, + by s");
618
619 MOS_TEST_CONDITIONAL(printf_tests_enable_posix)
620 {
621 PRINTF_TEST("Hot Pocket", "%1$s %2$s", "Hot", "Pocket");
622 PRINTF_TEST("12.0 Hot Pockets", "%1$.1f %2$s %3$ss", 12.0, "Hot", "Pocket");
623 }
624
625 MOS_TEST_CONDITIONAL(printf_tests_enable_floats)
626 {
627 PRINTF_TEST("0.33", "%.*f", 2, 0.33333333);
628 PRINTF_TEST("42.90", "%.2f", 42.8952);
629 PRINTF_TEST("42.90", "%.2F", 42.8952);
630 PRINTF_TEST("42.8952000000", "%.10f", 42.8952);
631 PRINTF_TEST("42.90", "%1.2f", 42.8952);
632 PRINTF_TEST(" 42.90", "%6.2f", 42.8952);
633 PRINTF_TEST("+42.90", "%+6.2f", 42.8952);
634 PRINTF_TEST("42.8952000000", "%5.10f", 42.8952);
635 PRINTF_TEST(" 3.14", "%*.*f", 10, 2, 3.14159265);
636 PRINTF_TEST("3.14 ", "%-*.*f", 10, 2, 3.14159265);
637 PRINTF_TEST("8.6000", "%2.4f", 8.6);
638 PRINTF_TEST("0.600000", "%0f", 0.6);
639 PRINTF_TEST("1", "%.0f", 0.6);
640 }
641
642 MOS_TEST_CONDITIONAL(printf_tests_enable_egp)
643 {
644 PRINTF_TEST("0x39", "%p", (void *) 57ULL);
645 PRINTF_TEST("0x39", "%p", (void *) 57U);
646 PRINTF_TEST("8.6000e+00", "%2.4e", 8.6);
647 PRINTF_TEST(" 8.6000e+00", "% 2.4e", 8.6);
648 PRINTF_TEST("-8.6000e+00", "% 2.4e", -8.6);
649 PRINTF_TEST("+8.6000e+00", "%+2.4e", 8.6);
650 PRINTF_TEST("8.6", "%2.4g", 8.6);
651 // e
652 PRINTF_TEST("+7.894561230000000e+08", "%+#22.15e", 7.89456123e8);
653 PRINTF_TEST("7.894561230000000e+08 ", "%-#22.15e", 7.89456123e8);
654 PRINTF_TEST(" 7.894561230000000e+08", "%#22.15e", 7.89456123e8);
655
656 // g
657 PRINTF_TEST("8.e+08", "%#1.1g", 7.89456123e8);
658 }
659 MOS_TEST_CONDITIONAL(printf_tests_enable_oxX)
660 {
661 PRINTF_TEST("0", "%#o", 0U);
662 PRINTF_TEST("0", "%#x", 0U);
663 PRINTF_TEST("0", "%#X", 0U);
664 PRINTF_TEST("12", "%o", 10);
665 PRINTF_TEST("61", "%hhx", 'a');
666 PRINTF_TEST("777", "%o", 511);
667 PRINTF_TEST("777", "%1o", 511);
668 PRINTF_TEST("0777", "%#o", 511);
669 PRINTF_TEST("2345", "%hx", 74565);
670 PRINTF_TEST("00000001", "%#08o", 1);
671 PRINTF_TEST("0x00000001", "%#04.8x", 1);
672 PRINTF_TEST("0x0000000001", "%#012x", 1);
673 PRINTF_TEST("1234abcd", "%x", 305441741);
674 PRINTF_TEST("1234ABCD", "%X", 305441741);
675 PRINTF_TEST("1234ABCD", "%1X", 305441741);
676 PRINTF_TEST("1234abcd", "%1x", 305441741);
677 PRINTF_TEST("edcb5433", "%x", 3989525555U);
678 PRINTF_TEST("EDCB5433", "%X", 3989525555U);
679 PRINTF_TEST("edcb5433", "%1x", 3989525555U);
680 PRINTF_TEST("EDCB5433", "%1X", 3989525555U);
681 PRINTF_TEST("00144 ", "%#-8.5llo", 100LL);
682 PRINTF_TEST("0x1234abcd", "%#x", 305441741);
683 PRINTF_TEST("0X1234ABCD", "%#X", 305441741);
684 PRINTF_TEST("0xedcb5433", "%#x", 3989525555U);
685 PRINTF_TEST("37777777001", "%o", 4294966785U);
686 PRINTF_TEST("0XEDCB5433", "%#X", 3989525555U);
687 PRINTF_TEST("37777777001", "%1o", 4294966785U);
688 PRINTF_TEST("037777777001", "%#o", 4294966785U);
689 PRINTF_TEST(" 777", "%*o", 20, 511);
690 PRINTF_TEST(" 37777777001", "%*o", 20, 4294966785U);
691 PRINTF_TEST(" 1234abcd", "%*x", 20, 305441741);
692 PRINTF_TEST(" edcb5433", "%*x", 20, 3989525555U);
693 PRINTF_TEST(" 1234ABCD", "%*X", 20, 305441741);
694 PRINTF_TEST(" EDCB5433", "%*X", 20, 3989525555U);
695 PRINTF_TEST(" 777", "%20o", 511);
696 PRINTF_TEST(" 1234abcd", "%20x", 305441741);
697 PRINTF_TEST(" 1234ABCD", "%20X", 305441741);
698 PRINTF_TEST(" 37777777001", "%20o", 4294966785U);
699 PRINTF_TEST(" edcb5433", "%20x", 3989525555U);
700 PRINTF_TEST(" EDCB5433", "%20X", 3989525555U);
701 PRINTF_TEST("777 ", "%-20o", 511);
702 PRINTF_TEST("1234abcd ", "%-20x", 305441741);
703 PRINTF_TEST("37777777001 ", "%-20o", 4294966785U);
704 PRINTF_TEST("edcb5433 ", "%-20x", 3989525555U);
705 PRINTF_TEST("1234ABCD ", "%-20X", 305441741);
706 PRINTF_TEST("EDCB5433 ", "%-20X", 3989525555U);
707 PRINTF_TEST("00000000000000000777", "%020o", 511);
708 PRINTF_TEST("00000000037777777001", "%020o", 4294966785U);
709 PRINTF_TEST("0000000000001234abcd", "%020x", 305441741);
710 PRINTF_TEST("000000000000edcb5433", "%020x", 3989525555U);
711 PRINTF_TEST("0000000000001234ABCD", "%020X", 305441741);
712 PRINTF_TEST("000000000000EDCB5433", "%020X", 3989525555U);
713 PRINTF_TEST(" 0777", "%#20o", 511);
714 PRINTF_TEST(" 037777777001", "%#20o", 4294966785U);
715 PRINTF_TEST(" 0x1234abcd", "%#20x", 305441741);
716 PRINTF_TEST(" 0xedcb5433", "%#20x", 3989525555U);
717 PRINTF_TEST(" 0X1234ABCD", "%#20X", 305441741);
718 PRINTF_TEST(" 0XEDCB5433", "%#20X", 3989525555U);
719 PRINTF_TEST("00000000000000000777", "%#020o", 511);
720 PRINTF_TEST("00000000037777777001", "%#020o", 4294966785U);
721 PRINTF_TEST("0x00000000001234abcd", "%#020x", 305441741);
722 PRINTF_TEST("0x0000000000edcb5433", "%#020x", 3989525555U);
723 PRINTF_TEST("0X00000000001234ABCD", "%#020X", 305441741);
724 PRINTF_TEST("0X0000000000EDCB5433", "%#020X", 3989525555U);
725 PRINTF_TEST("00000000000000000777", "%.20o", 511);
726 PRINTF_TEST("00000000037777777001", "%.20o", 4294966785U);
727 PRINTF_TEST("0000000000001234abcd", "%.20x", 305441741);
728 PRINTF_TEST("000000000000edcb5433", "%.20x", 3989525555U);
729 PRINTF_TEST("0000000000001234ABCD", "%.20X", 305441741);
730 PRINTF_TEST("000000000000EDCB5433", "%.20X", 3989525555U);
731 PRINTF_TEST(" 00777", "%20.5o", 511);
732 PRINTF_TEST(" 37777777001", "%20.5o", 4294966785U);
733 PRINTF_TEST(" 1234abcd", "%20.5x", 305441741);
734 PRINTF_TEST(" 00edcb5433", "%20.10x", 3989525555U);
735 PRINTF_TEST(" 1234ABCD", "%20.5X", 305441741);
736 PRINTF_TEST(" 00EDCB5433", "%20.10X", 3989525555U);
737 PRINTF_TEST(" 00777", "%020.5o", 511);
738 PRINTF_TEST(" 37777777001", "%020.5o", 4294966785U);
739 PRINTF_TEST(" 1234abcd", "%020.5x", 305441741);
740 PRINTF_TEST(" 00edcb5433", "%020.10x", 3989525555U);
741 PRINTF_TEST(" 1234ABCD", "%020.5X", 305441741);
742 PRINTF_TEST(" 00EDCB5433", "%020.10X", 3989525555U);
743 PRINTF_TEST(" 777", "%20.o", 511);
744 PRINTF_TEST(" ", "%20.o", 0U);
745 PRINTF_TEST(" 1234abcd", "%20.x", 305441741);
746 PRINTF_TEST(" ", "%20.x", 0U);
747 PRINTF_TEST(" 1234ABCD", "%20.X", 305441741);
748 PRINTF_TEST(" ", "%20.X", 0U);
749 PRINTF_TEST(" 37777777001", "%20.0o", 4294966785U);
750 PRINTF_TEST(" edcb5433", "%20.0x", 3989525555U);
751 PRINTF_TEST(" EDCB5433", "%20.0X", 3989525555U);
752 PRINTF_TEST("0001777777777777777777634", "%#.25llo", -100LL);
753 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("0x01 ", "%#-08.2x", 1), "0 flag ignored by '-'");
754 MOS_TEST_EXPECT_WARNING(PRINTF_TEST(" 01777777777777777777634", "%#+24.20llo", -100LL), "+ ignored in o");
755 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("001777777777777777777634", "%#+20.24llo", -100LL), "+ ignored in o");
756 MOS_TEST_EXPECT_WARNING(PRINTF_TEST(" 0x00ffffffffffffff9c", "%#+21.18llx", -100LL), "+ ignored in x");
757 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("0X00000FFFFFFFFFFFFFF9C", "%#+18.21llX", -100LL), "+ ignored in X");
758 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("777 ", "%-020o", 511), "- flag ignored in o mode");
759 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("37777777001 ", "%-020o", 4294966785U), "- flag ignored in o mode");
760 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1234abcd ", "%-020x", 305441741), "- flag ignored in x mode");
761 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("edcb5433 ", "%-020x", 3989525555U), "- flag ignored in x mode");
762 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1234ABCD ", "%-020X", 305441741), "- flag ignored in X mode");
763 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("EDCB5433 ", "%-020X", 3989525555U), "- flag ignored in X mode");
764 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("777", "%+o", 511), "+ flag ignored in o mode");
765 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("37777777001", "%+o", 4294966785U), "+ flag ignored in o mode");
766 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1234abcd", "%+x", 305441741), "+ flag ignored in x mode");
767 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("edcb5433", "%+x", 3989525555U), "+ flag ignored in x mode");
768 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1234ABCD", "%+X", 305441741), "+ flag ignored in X mode");
769 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("EDCB5433", "%+X", 3989525555U), "+ flag ignored in X mode");
770 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("777", "% o", 511), "' ' flag ignored in o mode");
771 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("37777777001", "% o", 4294966785U), "' ' flag ignored in o mode");
772 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1234abcd", "% x", 305441741), "' ' flag ignored in x mode");
773 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("edcb5433", "% x", 3989525555U), "' ' flag ignored in x mode");
774 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("1234ABCD", "% X", 305441741), "' ' flag ignored in x mode");
775 MOS_TEST_EXPECT_WARNING(PRINTF_TEST("EDCB5433", "% X", 3989525555U), "' ' flag ignored in x mode");
776 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("777", "%+ o", 511), "+ and ' ' ignored in o mode");
777 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("37777777001", "%+ o", 4294966785U), "+ and ' ' ignored in o mode");
778 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("1234abcd", "%+ x", 305441741), "+ and ' ' ignored in x mode");
779 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("edcb5433", "%+ x", 3989525555U), "+ and ' ' ignored in x mode");
780 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("1234ABCD", "%+ X", 305441741), "+ and ' ' ignored in X mode");
781 MOS_TEST_EXPECT_WARNING_N(2, PRINTF_TEST("EDCB5433", "%+ X", 3989525555U), "+ and ' ' ignored in X mode");
782 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("00777 ", "%+ -0*.*o", 20, 5, 511), "ignored ' ' and 0, + in o");
783 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("37777777001 ", "%+ -0*.*o", 20, 5, 4294966785U), "ignored ' ' and 0, + in o");
784 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("1234abcd ", "%+ -0*.*x", 20, 5, 305441741), "ignored ' ' and 0, + in x");
785 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("00edcb5433 ", "%+ -0*.*x", 20, 10, 3989525555U), "ignored ' ' and 0, + in x");
786 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("1234ABCD ", "% -+0*.*X", 20, 5, 305441741), "ignored ' ' and 0, + in X");
787 MOS_TEST_EXPECT_WARNING_N(3, PRINTF_TEST("00EDCB5433 ", "% -+0*.*X", 20, 10, 3989525555U), "ignored ' ' and 0, + in X");
788 }
789}
790MOS_WARNING_POP
791