123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- /*
- * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
- *
- * FILE: dat_wcstombs.c
- *
- * WCSTOMBS: size_t wcstombs (char *s, const wchar_t *ws, size_t n)
- */
- /*
- * CAUTION:
- * Do not use a value 0x01 for string data. The test program
- * uses it.
- *
- */
- TST_WCSTOMBS tst_wcstombs_loc [] = {
- {
- { Twcstombs, TST_LOC_de },
- {
- /* #01 : Any chars including a null char should not be stored in s. */
- { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 },
- /*expect*/ { 0,1,0, "" },
- },
- /* #02 : Only one chars should be stored in s. No null termination. */
- { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1 },
- /*expect*/ { 0,1,1, "Ä" },
- },
- /* #03 : Only two chars should be stored in s. No null termination. */
- { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 2 },
- /*expect*/ { 0,1,2, "ÄÖ" },
- },
- /* #04 : Only three chars should be stored in s. No null
- termination. */
- { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 3 },
- /*expect*/ { 0,1,3, "ÄÖÜ" },
- },
- /* #05 : Only three chars should be stored in s with a null
- termination. */
- { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 4 },
- /*expect*/ { 0,1,3, "ÄÖÜ" },
- },
- /* #06 : Only three chars should be stored in s with a null
- termination. */
- { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5 },
- /*expect*/ { 0,1,3, "ÄÖÜ" },
- },
- /* #07 : Invalid mb sequence. No chars should be stored in s. */
- { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 },
- /*expect*/ { EILSEQ,1,(size_t)-1, "" },
- },
- /* #08 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 },
- /*expect*/ { 0,1,3, "" },
- },
- /* #09 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1 },
- /*expect*/ { 0,1,3, "" },
- },
- /* #10 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5 },
- /*expect*/ { 0,1,3, "" },
- },
- /* #11 : s is a null pointer. No chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 },
- /*expect*/ { EILSEQ,1,(size_t)-1, "" },
- },
- /* #12 : ws is a null wc string, no chars should be stored in s. */
- { /*input.*/ { 1,1, { 0x0000 }, 5 },
- /*expect*/ { 0,1,0, "" },
- },
- /* #13 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0000 }, 5 },
- /*expect*/ { 0,1,0, "" },
- },
- { .is_last = 1 }
- }
- },
- {
- { Twcstombs, TST_LOC_enUS },
- {
- /* #01 : Any chars including a null char should not be stored in s. */
- { /*input.*/ { 1,1, { 0x00C4,0x0042,0x0043,0x0000 }, 0 },
- /*expect*/ { 0,1,0, "" },
- },
- /* #02 : Only one chars should be stored in s. No null termination. */
- { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 1 },
- /*expect*/ { 0,1,1, "A" },
- },
- /* #03 : Only two chars should be stored in s. No null termination. */
- { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 2 },
- /*expect*/ { 0,1,2, "AB" },
- },
- /* #04 : Only three chars should be stored in s. No null
- termination. */
- { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 3 },
- /*expect*/ { 0,1,3, "ABC" },
- },
- /* #05 : Only three chars should be stored in s with a null
- termination. */
- { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 4 },
- /*expect*/ { 0,1,3, "ABC" },
- },
- /* #06 : Only three chars should be stored in s with a null
- termination. */
- { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 5 },
- /*expect*/ { 0,1,3, "ABC" },
- },
- /* #07 : Invalid mb sequence. No chars should be stored in s. */
- { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 },
- /*expect*/ { EILSEQ,1,(size_t)-1, "" },
- },
- /* #08 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 0 },
- /*expect*/ { 0,1,3, "" },
- },
- /* #09 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 1 },
- /*expect*/ { 0,1,3, "" },
- },
- /* #10 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 5 },
- /*expect*/ { 0,1,3, "" },
- },
- /* #11 : s is a null pointer. No chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 },
- /*expect*/ { EILSEQ,1,(size_t)-1, "" },
- },
- /* #12 : ws is a null wc string, no chars should be stored in s. */
- { /*input.*/ { 1,1, { 0x0000 }, 5, },
- /*expect*/ { 0,1,0, "" },
- },
- /* #13 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0000 }, 5 },
- /*expect*/ { 0,1,0, "" },
- },
- { .is_last = 1 }
- }
- },
- #if 0
- {
- { Twcstombs, TST_LOC_eucJP },
- {
- /* #01 : Any chars including a null char should not be stored in s. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 },
- /*expect*/ { 0,1,0, "" },
- },
- /* #02 : Only one chars should be stored in s. No null termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 2 },
- /*expect*/ { 0,1,2, "\244\242" },
- },
- /* #03 : Only two chars should be stored in s. No null termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 4 },
- /*expect*/ { 0,1,4, "\244\242\244\244" },
- },
- /* #04 : Only three chars should be stored in s. No null
- termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6 },
- /*expect*/ { 0,1,6, "\244\242\244\244\216\263" },
- },
- /* #05 : Only three chars should be stored in s with a null
- termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 7 },
- /*expect*/ { 0,1,6, "\244\242\244\244\216\263" },
- },
- /* #06 : Only three chars should be stored in s with a null
- termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 },
- /*expect*/ { 0,1,6, "\244\242\244\244\216\263" },
- },
- /* #07 : Invalid mb sequence. No chars should be stored in s. */
- { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 },
- /*expect*/ { EILSEQ,1,-1, "" },
- },
- /* #08 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 },
- /*expect*/ { 0,1,6, "" },
- },
- /* #09 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1 },
- /*expect*/ { 0,1,6, "" },
- },
- /* #10 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 },
- /*expect*/ { 0,1,6, "" },
- },
- /* #11 : s is a null pointer. No chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 },
- /*expect*/ { EILSEQ,1,(size_t)-1, "" },
- },
- /* #12 : ws is a null wc string, no chars should be stored in s. */
- { /*input.*/ { 1,1, { 0x0000 }, 5 },
- /*expect*/ { 0,1,0, "" },
- },
- /* #13 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0000 }, 5 },
- /*expect*/ { 0,1,0, "" },
- },
- { .is_last = 1 }
- }
- },
- #else
- {
- { Twcstombs, TST_LOC_ja_UTF8 },
- {
- /* #01 : Any chars including a null char should not be stored in s. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 },
- /*expect*/ { 0,1,0, "" },
- },
- /* #02 : Only one chars should be stored in s. No null termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 3 },
- /*expect*/ { 0,1,3, "\343\201\202" },
- },
- /* #03 : Only two chars should be stored in s. No null termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6 },
- /*expect*/ { 0,1,6, "\343\201\202\343\201\204" },
- },
- /* #04 : Only three chars should be stored in s. No null
- termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 9 },
- /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" },
- },
- /* #05 : Only three chars should be stored in s with a null
- termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 10 },
- /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" },
- },
- /* #06 : Only three chars should be stored in s with a null
- termination. */
- { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 11 },
- /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" },
- },
- /* #07 : Invalid mb sequence. No chars should be stored in s. */
- { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 },
- /*expect*/ { EILSEQ,1,-1, "" },
- },
- /* #08 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 },
- /*expect*/ { 0,1,9, "" },
- },
- /* #09 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1 },
- /*expect*/ { 0,1,9, "" },
- },
- /* #10 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 },
- /*expect*/ { 0,1,9, "" },
- },
- /* #11 : s is a null pointer. No chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 },
- /*expect*/ { EILSEQ,1,(size_t)-1, "" },
- },
- /* #12 : ws is a null wc string, no chars should be stored in s. */
- { /*input.*/ { 1,1, { 0x0000 }, 5 },
- /*expect*/ { 0,1,0, "" },
- },
- /* #13 : s is a null pointer, no chars should be stored in s. */
- { /*input.*/ { 0,1, { 0x0000 }, 5 },
- /*expect*/ { 0,1,0, "" },
- },
- { .is_last = 1 }
- }
- },
- #endif
- {
- { Twcstombs, TST_LOC_end }
- }
- };
|