Skip to content
Permalink
a5ff533ea1
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
341 lines (338 sloc) 6.88 KB
/*
* TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
*
* FILE: dat_mbtowc.c
*
* MBTOWC: int mbtowc (wchar_t *wp, char *s, size_t n);
*/
/* NOTE:
*
* int mbtowc (wchar_t *wp, char *s, size_t n);
*
* where n: a maximum number of bytes
* return: the number of bytes
*
*
* o When you feed a null pointer for a string (s) to the function,
* set s_flg=0 instead of putting just a 'NULL' there.
* Even if you put a 'NULL', it means a null string as well as "".
*
* o When s is a null pointer, the function checks state dependency.
*
* state-dependent encoding - return NON-zero
* state-independent encoding - return 0
*
* If state-dependent encoding is expected, set
*
* s_flg = 0, ret_flg = 0, ret_val = +1
*
* If state-independent encoding is expected, set
*
* s_flg = 0, ret_flg = 0, ret_val = 0
*
*
* When you set ret_flg=1, the test program simply compares
* an actual return value with an expected value. You can
* check state-independent case (return value is 0) in that
* way, but you can not check state-dependent case. So when
* you check state- dependency in this test function:
* tst_mbtowc(), set ret_flg=0 always. It's a special case
* and the test function takes care of it.
*
* w_flg
* | s: (a null string; can't be (char *)NULL)
* | |
* input. { 1, 0, (char)NULL, MB_LEN_MAX },
* |
* s_flg=0: makes _s_ a null pointer.
*
* expect { 0,0,0,x, 0x0000 },
* | |
* | ret_val: 0/+1
* ret_flg=0
*
*
* Test data for State dependent encodings:
*
* mbtowc( NULL, NULL, 0 ); ... first data
* mbtowc( &wc, s1, n1 ); ... second data
* mbtowc( &wc, s2, n2 ); ... third data
* */
#include <limits.h>
TST_MBTOWC tst_mbtowc_loc [] = {
{
{ Tmbtowc, TST_LOC_de },
{
{ /*----------------- #01 -----------------*/
{
{
{ 1, 1, "\xfc\xe4\xf6", 1 },
{ 1, 1, "\xfc\xe4\xf6", 2 },
{ 1, 1, "\xfc\xe4\xf6", MB_LEN_MAX },
}
},
{
{
{ 0, 1, 1, 0x00FC },
{ 0, 1, 1, 0x00FC },
{ 0, 1, 1, 0x00FC },
}
}
},
{ /*----------------- #02 -----------------*/
{
{
{ 1, 1, "\177", MB_LEN_MAX },
{ 1, 1, "\200", MB_LEN_MAX },
{ 1, 1, "\201", MB_LEN_MAX },
}
},
{
{
{ 0, 1, 1, 0x007F },
{ 0, 1, 1, 0x0080 },
{ 0, 1, 1, 0x0081 },
}
}
},
{ /*----------------- #03 -----------------*/
{
{
{ 1, 1, "", MB_LEN_MAX },
{ 0, 1, "\xfc\xe4\xf6", 1 },
{ 0, 1, "\xfc\xe4\xf6", 2 },
}
},
{
{
{ 0, 1, 0, 0x0000 },
{ 0, 1, 1, 0x0000 },
{ 0, 1, 1, 0x0000 },
}
}
},
{ /*----------------- #04 -----------------*/
{
{
{ 0, 1, "\xfc\xe4\xf6", MB_LEN_MAX },
{ 0, 1, "\177", MB_LEN_MAX },
{ 0, 1, "", MB_LEN_MAX },
}
},
{
{
{ 0, 1, 1, 0x0000 },
{ 0, 1, 1, 0x0000 },
{ 0, 1, 0, 0x0000 },
}
}
},
{ /*----------------- #05 -----------------*/
{
{
{ 0, 1, "\xfc\xe4\xf6", MB_LEN_MAX },
{ 0, 1, "\177", MB_LEN_MAX },
{ 0, 0, NULL, MB_LEN_MAX },
}
},
{
{
{ 0, 1, 1, 0x0000 },
{ 0, 1, 1, 0x0000 },
{ 0, 0, 0, 0x0000 },
}
}
},
{ .is_last = 1 }
}
},
{
{ Tmbtowc, TST_LOC_enUS },
{
{ /*----------------- #01 -----------------*/
{
{
{ 1, 1, "ABC", 1 },
{ 1, 1, "ABC", 2 },
{ 1, 1, "ABC", MB_LEN_MAX },
}
},
{
{
{ 0, 1, 1, 0x0041 },
{ 0, 1, 1, 0x0041 },
{ 0, 1, 1, 0x0041 },
}
}
},
{ /*----------------- #02 -----------------*/
{
{
{ 1, 1, "\177", MB_LEN_MAX },
{ 1, 1, "\200", MB_LEN_MAX },
{ 1, 1, "\201", MB_LEN_MAX },
}
},
{
{
{ 0, 1, 1, 0x007F },
{ EILSEQ, 1, -1, 0x0000 },
{ EILSEQ, 1, -1, 0x0000 },
}
}
},
{ /*----------------- #03 -----------------*/
{
{
{ 1, 1, "", MB_LEN_MAX },
{ 0, 1, "ABC", 1 },
{ 0, 1, "ABC", 2 },
}
},
{
{
{ 0, 1, 0, 0x0000 },
{ 0, 1, 1, 0x0000 },
{ 0, 1, 1, 0x0000 },
}
}
},
{ /*----------------- #04 -----------------*/
{
{
{ 0, 1, "ABC", MB_LEN_MAX },
{ 0, 1, "\177", MB_LEN_MAX },
{ 0, 1, "", MB_LEN_MAX },
}
},
{
{
{ 0, 1, 1, 0x0000 },
{ 0, 1, 1, 0x0000 },
{ 0, 1, 0, 0x0000 },
}
}
},
{ /*----------------- #05 -----------------*/
{
{
{ 0, 1, "ABC", MB_LEN_MAX },
{ 0, 1, "\177", MB_LEN_MAX },
{ 0, 0, NULL, MB_LEN_MAX },
}
},
{
{
{ 0, 1, 1, 0x0000 },
{ 0, 1, 1, 0x0000 },
{ 0, 0, 0, 0x0000 },
}
}
},
{ .is_last = 1 }
}
},
{
{ Tmbtowc, TST_LOC_eucJP },
{
{ /*----------------- #01 -----------------*/
{
{
{ 1, 1, "\244\242A", 1 },
{ 1, 1, "\244\242A", 2 },
{ 1, 1, "\244\242A", MB_LEN_MAX },
}
},
{
{
#ifdef SHOJI_IS_RIGHT
{ EILSEQ, 1, -1, 0x0000 },
#else
/* XXX EILSEQ was introduced in ISO C99. */
{ 0, 1, -1, 0x0000 },
#endif
{ 0, 1, 2, 0x3042 },
{ 0, 1, 2, 0x3042 },
}
}
},
{ /*----------------- #02 -----------------*/
{
{
{ 1, 1, "\177\244\242", MB_LEN_MAX },
{ 1, 1, "\377\244\242", MB_LEN_MAX },
{ 1, 1, "\201\244\242", MB_LEN_MAX },
}
},
{
{
{ 0, 1, +1, 0x007F },
#ifdef SHOJI_IS_RIGHT
{ EILSEQ, 1, -1, 0x0000 },
#else
{ 0, 1, -1, 0x0000 },
#endif
{ 0, 1, +1, 0x0081 },
}
}
},
{ /*----------------- #03 -----------------*/
{
{
{ 1, 1, "", MB_LEN_MAX },
{ 0, 1, "\244\242A", 1 },
{ 0, 1, "\244\242A", 2 },
}
},
{
{
{ 0, 1, 0, 0x0000 },
#ifdef SHOJI_IS_RIGHT
{ EILSEQ, 1, -1, 0x0000 },
#else
/* XXX EILSEQ was introduced in ISO C99. */
{ 0, 1, -1, 0x0000 },
#endif
{ 0, 1, 2, 0x0000 },
}
}
},
{ /*----------------- #04 -----------------*/
{
{
{ 0, 1, "\244\242A", MB_LEN_MAX },
{ 0, 1, "\177\244\242", MB_LEN_MAX },
{ 0, 1, "", MB_LEN_MAX },
}
},
{
{
{ 0, 1, 2, 0x0000 },
{ 0, 1, +1, 0x0000 },
{ 0, 1, 0, 0x0000 },
}
}
},
{ /*----------------- #05 -----------------*/
{
{
{ 0, 1, "\244\242A", MB_LEN_MAX },
{ 0, 1, "\177\244\242", MB_LEN_MAX },
{ 0, 0, NULL, MB_LEN_MAX },
}
},
{
{
{ 0, 1, 2, 0x0000 },
{ 0, 1, +1, 0x0000 },
{ 0, 0, 0, 0x0000 },
}
}
},
{ .is_last = 1 }
}
},
{
{ Tmbtowc, TST_LOC_end }
}
};