1 /** tests for snprintf
\r
2 type: INT, LONG, STRING, FLOAT
\r
24 } static const cases[]={
\r
26 {0xab, "%04x", "00ab"},
\r
27 {0xffff, "0x%02X", "0xFFFF"},
\r
28 {0xffffu, "%u", "65535"},
\r
29 {1234, "%+6d", " +1234"},
\r
30 {12345, "% d", " 12345"},
\r
31 {-1234, "%d", "-1234"},
\r
32 {32767, "%8d", " 32767"},
\r
34 {1001, "%08i", "00001001"},
\r
35 {101, "%-+8d", "+101 "},
\r
36 {01234, "%o(oct)", "1234(oct)"},
\r
38 // do we want to check these:
\r
39 #if defined(SDCC) && !defined(SDCC_z80) && CHECK_B
\r
40 {0x4142, "%bc %bx", "\x41 42"}, /* non-std: print as bytes! */
\r
41 {0xfffe, "0x%02bX%02bx", "0xFFfe"}, /* non-std: print as bytes! */
\r
42 #elif defined(SDCC) && defined(SDCC_z80) && CHECK_B
\r
43 {0x4142, "%bc %bx", "\x42 41"}, /* non-std: print as bytes! */
\r
44 {0xfffe, "0x%02bX%02bx", "0xFEff"}, /* non-std: print as bytes! */
\r
54 } static const cases[]={
\r
56 {0x12345678, "0x%lx", "0x12345678"},
\r
57 {0x7fffFFFF, "%10lx", " 7fffffff"},
\r
58 {0x789abcde, "0x%-10lX", "0x789ABCDE "},
\r
59 {0x1000a, "0x%02lX", "0x1000A"},
\r
60 {0x80000000, "%lu", "2147483648"},
\r
61 {-2147483648, "%li", "-2147483648"},
\r
62 {-1234, "%+6ld", " -1234"},
\r
63 {012345670123, "%lo(oct)", "12345670123(oct)"},
\r
64 {0xffffFFFF, "%lo(oct)", "37777777777(oct)"},
\r
66 // do we want to check these:
\r
67 #if defined(SDCC) && !defined(SDCC_z80) && CHECK_B
\r
68 {0xfedcba98, "0x%bX%bX%bx%bx", "0xFEDCba98"}, /* non-std: print as bytes! */
\r
69 #elif defined(SDCC) && defined(SDCC_z80) && CHECK_B
\r
70 {0xfedcba98, "0x%bX%bX%bx%bx", "0x98BAdcfe"}, /* non-std: print as bytes! */
\r
74 #elif defined(STRING)
\r
80 } static const cases[]={
\r
82 {"abcd", "%s", "abcd"},
\r
83 {"abcd", "%3s", "abcd"},
\r
84 {"abcd", "%5s", " abcd"},
\r
85 {"abcd", "%-5s", "abcd "},
\r
86 {"abcd", "%.2s", "ab"},
\r
87 {"XYZ\\", "%s", "XYZ\x5c"},
\r
88 {"ab\x1b\x7f", "%s", "ab\x1b\x7f"},
\r
89 {"ab\tcd\n","%s", "ab\tcd\n"},
\r
92 #elif defined(FLOAT)
\r
98 } static const cases[]={
\r
100 // ... there should be more ...
\r
101 #if defined(SDCC) && !defined(SDCC_ds390)
\r
102 {1.0, "%f", "<NO FLOAT>"},
\r
104 {1.0, "%f", "1.000000"},
\r
105 {1.96, "%3.1f", "2.0"},
\r
112 test_snprintf(void)
\r
114 unsigned char buf[32];
\r
117 memset(buf, 0xfe, sizeof buf); /* cookies all over */
\r
119 for (i=0; i<sizeof cases / sizeof cases[0]; i++) {
\r
120 sprintf(buf,cases[i].fmt,cases[i].arg);
\r
121 DEBUG(printf ("Test%d should be: \"%s\" is: \"%s\"\n", i, cases[i].result, buf));
\r
122 ASSERT(!strcmp(buf,cases[i].result));
\r
125 ASSERT(buf[sizeof buf - 10] == 0xfe); /* check for cookie */
\r