From bb9231c8402e9ae99f98a868429e73c6340da304 Mon Sep 17 00:00:00 2001 From: Carmelo Amoroso Date: Thu, 10 Jul 2008 10:30:28 +0000 Subject: Added missing tests for locale with multibyte encoding --- test/locale-mbwc/tst_types.h | 729 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 729 insertions(+) create mode 100644 test/locale-mbwc/tst_types.h (limited to 'test/locale-mbwc/tst_types.h') diff --git a/test/locale-mbwc/tst_types.h b/test/locale-mbwc/tst_types.h new file mode 100644 index 000000000..3d1827941 --- /dev/null +++ b/test/locale-mbwc/tst_types.h @@ -0,0 +1,729 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: tst_types.h + * + * Definitions of data types for each test function + */ + + +#ifndef TST_TYPES_H +#define TST_TYPES_H + +#include +#include +#include +#include "tst_funcs.h" +#include "tgn_funcdef.h" + +#define MBSSIZE 24 +#define WCSSIZE 12 +#define MONFMTSIZE 16 +#define MONSIZE 64 +#define USE_MBCURMAX 99 /* well, but ... */ +#define TST_DBL_EPS 2.22153e-16 +#define WCSTOK_SEQNUM 3 +#define MBLEN_SEQNUM 3 +#define MBTOWC_SEQNUM 3 +#define MBSTOWCS_SEQNUM 3 +#define WCTOMB_SEQNUM 3 +#define WCSTOMBS_SEQNUM 3 +#define MBRLEN_SEQNUM 3 +#define MBRTOWC_SEQNUM 3 +#define MBSRTOWCS_SEQNUM 3 +#define WCRTOMB_SEQNUM 3 +#define WCSRTOMBS_SEQNUM 3 + +/* Maximum numbers of test in one of the _loc arrays. */ +#define MAX_LOC_TEST 300 + + +/*----------------------------------------------------------------------*/ +/* FUNCTION */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char *func_str; + int func_id; +} +TST_FID; + +typedef struct +{ + int func_id; + const char *locale; +} +TST_HEAD; + +typedef struct +{ + TST_HEAD *head; +} +TST_FUNCS; + + +/*----------------------------------------------------------------------*/ +/* ISW*: int isw* (wchar_t wc) */ +/*----------------------------------------------------------------------*/ + +TST_ISW_STRUCT (ALNUM, alnum); +TST_ISW_STRUCT (ALPHA, alpha); +TST_ISW_STRUCT (CNTRL, cntrl); +TST_ISW_STRUCT (DIGIT, digit); +TST_ISW_STRUCT (GRAPH, graph); +TST_ISW_STRUCT (LOWER, lower); +TST_ISW_STRUCT (PRINT, print); +TST_ISW_STRUCT (PUNCT, punct); +TST_ISW_STRUCT (SPACE, space); +TST_ISW_STRUCT (UPPER, upper); +TST_ISW_STRUCT (XDIGIT, xdigit); + +typedef struct +{ + wint_t wc; + const char *ts; +} +TIN_ISWCTYPE_REC; + +typedef +TEX_ERRET_REC (int) + TEX_ISWCTYPE_REC; +TMD_RECHEAD (ISWCTYPE); + + +/*----------------------------------------------------------------------*/ +/* MBLEN: int mblen (const char *s, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char s_flg; + char s[MBSSIZE]; + size_t n; +} +TIN_MBLEN_REC; + +typedef TEX_ERRET_REC (int) TEX_MBLEN_REC; +TMD_RECHEAD (MBLEN); + + +/*----------------------------------------------------------------------*/ +/* MBRLEN: size_t mbrlen (const char *s, size_t n, mbstate_t *ps) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int s_flg; + char s[MBSSIZE]; + size_t n; + int t_flg; + int t_init; + } + seq[WCSTOK_SEQNUM]; +} +TIN_MBRLEN_REC; + +typedef TEX_ERRET_REC_SEQ (size_t, MBRLEN_SEQNUM) TEX_MBRLEN_REC; +TMD_RECHEAD (MBRLEN); + + +/*----------------------------------------------------------------------*/ +/* MBRTOWC: size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, */ +/* mbstate_t *ps) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int w_flg; + int s_flg; + char s[MBSSIZE]; + size_t n; + int t_flg; + int t_init; + } + seq[MBRTOWC_SEQNUM]; +} +TIN_MBRTOWC_REC; + +typedef struct +{ + struct + { + TMD_ERRET (size_t); + wchar_t wc; + } + seq[MBRTOWC_SEQNUM]; +} +TEX_MBRTOWC_REC; + +TMD_RECHEAD (MBRTOWC); + + +/*----------------------------------------------------------------------*/ +/* MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, const char **s, size_t n, */ +/* mbstate_t *ps ) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int w_flg; + char s[MBSSIZE]; + size_t n; + int t_flg; + int t_init; + } + seq[MBSRTOWCS_SEQNUM]; +} +TIN_MBSRTOWCS_REC; + +typedef struct +{ + struct + { + TMD_ERRET (size_t); + wchar_t ws[WCSSIZE]; + } + seq[MBSRTOWCS_SEQNUM]; +} +TEX_MBSRTOWCS_REC; + +TMD_RECHEAD (MBSRTOWCS); + + +/*----------------------------------------------------------------------*/ +/* MBSTOWCS: size_t mbstowcs (wchar_t *ws, const char *s, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int w_flg; + int s_flg; + const char *s; + size_t n; + } + seq[MBSTOWCS_SEQNUM]; +} +TIN_MBSTOWCS_REC; + +typedef TEX_MBSRTOWCS_REC TEX_MBSTOWCS_REC; +/* MBSRTOWCS_SEQNUM == MBSTOWCS_SEQNUM */ +TMD_RECHEAD (MBSTOWCS); + + +/*----------------------------------------------------------------------*/ +/* MBTOWC: int mbtowc (wchar_t *wc, const char *s, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_MBSTOWCS_REC TIN_MBTOWC_REC; +/* MBTOWC_SEQNUM == MBSTOWCS_SEQNUM */ + +typedef struct +{ + struct + { + TMD_ERRET (int); + wchar_t wc; + } + seq[MBTOWC_SEQNUM]; +} +TEX_MBTOWC_REC; + +TMD_RECHEAD (MBTOWC); + + +/*----------------------------------------------------------------------*/ +/* STRCOLL: int strcoll (const char *s1, const char *s2) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char s1[MBSSIZE]; + char s2[MBSSIZE]; +} +TIN_STRCOLL_REC; + +typedef TEX_ERRET_REC (int) TEX_STRCOLL_REC; +TMD_RECHEAD (STRCOLL); + + +/*----------------------------------------------------------------------*/ +/* STRFMON: size_t strfmon (char *buf, size_t nbytes, */ +/* const char *fmt, ... ) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int nbytes; + char fmt[MONFMTSIZE]; + double val; +} +TIN_STRFMON_REC; + +typedef struct +{ + TMD_ERRET (size_t); + char mon[MONSIZE]; +} +TEX_STRFMON_REC; + +TMD_RECHEAD (STRFMON); + + +/*----------------------------------------------------------------------*/ +/* STRXFRM: size_t strxfrm (char *s1, const char *s2, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char org1[MBSSIZE]; + char org2[MBSSIZE]; + size_t n1, n2; +} +TIN_STRXFRM_REC; + +typedef TEX_ERRET_REC (size_t) TEX_STRXFRM_REC; /* only for org2[] */ +TMD_RECHEAD (STRXFRM); + + +/*----------------------------------------------------------------------*/ +/* SWSCANF: int swscanf (const wchar_t *ws, const wchar_t *fmt, ...) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws[WCSSIZE * 3]; + wchar_t fmt[WCSSIZE * 3]; + int wch; +} +TIN_SWSCANF_REC; + +typedef struct +{ + TMD_ERRET (int); + int val_int; /* %d */ + unsigned val_uns; /* %u */ + float val_flt; /* %f */ + int val_c; /* %c */ + char val_s[MBSSIZE * 2]; /* %s */ + wchar_t val_S[WCSSIZE * 2]; /* %lc, %ls, %C, %S */ +} +TEX_SWSCANF_REC; + +TMD_RECHEAD (SWSCANF); + + +/*----------------------------------------------------------------------*/ +/* TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t desc) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_ISWCTYPE_REC TIN_TOWCTRANS_REC; +typedef TEX_ERRET_REC (wint_t) TEX_TOWCTRANS_REC; +TMD_RECHEAD (TOWCTRANS); + + +/*----------------------------------------------------------------------*/ +/* TOW*ER: wint_t tow*er (wint_t wc) */ +/*----------------------------------------------------------------------*/ + +TST_TOW_STRUCT (LOWER, lower); +TST_TOW_STRUCT (UPPER, upper); + + +/*----------------------------------------------------------------------*/ +/* WCRTOMB: wchar_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int s_flg; + wchar_t wc; + int t_flg; + int t_init; +} +TIN_WCRTOMB_REC; + +typedef struct +{ + TMD_ERRET (wchar_t); + char s[MBSSIZE]; +} +TEX_WCRTOMB_REC; + +TMD_RECHEAD (WCRTOMB); + + +/*----------------------------------------------------------------------*/ +/* WCSCAT: wchar_t *wcscat (wchar_t *ws1, wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws1[WCSSIZE]; + wchar_t ws2[WCSSIZE]; +} +TIN_WCSCAT_REC; + +typedef struct +{ + TMD_ERRET (wchar_t *); + wchar_t ws[WCSSIZE]; +} +TEX_WCSCAT_REC; + +TMD_RECHEAD (WCSCAT); + + +/*----------------------------------------------------------------------*/ +/* WCSCHR: wchar_t *wcschr (wchar_t *ws, wchar_t wc); */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws[WCSSIZE]; + wchar_t wc; +} +TIN_WCSCHR_REC; + +typedef TEX_ERRET_REC (wchar_t *) TEX_WCSCHR_REC; +TMD_RECHEAD (WCSCHR); + + +/*----------------------------------------------------------------------*/ +/* WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCAT_REC TIN_WCSCMP_REC; +typedef TEX_ERRET_REC (int) TEX_WCSCMP_REC; +TMD_RECHEAD (WCSCMP); + + +/*----------------------------------------------------------------------*/ +/* WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCMP_REC TIN_WCSCOLL_REC; +typedef struct +{ + TMD_ERRET (int); + int cmp_flg; +} +TEX_WCSCOLL_REC; +TMD_RECHEAD (WCSCOLL); + + +/*----------------------------------------------------------------------*/ +/* WCSCPY: wchar_t *wcscpy (wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws[WCSSIZE]; /* ws2: original string */ +} +TIN_WCSCPY_REC; + +typedef TEX_WCSCAT_REC TEX_WCSCPY_REC; +TMD_RECHEAD (WCSCPY); + + +/*----------------------------------------------------------------------*/ +/* WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCAT_REC TIN_WCSCSPN_REC; +typedef TEX_ERRET_REC (size_t) TEX_WCSCSPN_REC; +TMD_RECHEAD (WCSCSPN); + + +/*----------------------------------------------------------------------*/ +/* WCSLEN: size_t wcslen (const wchar_t *ws) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCPY_REC TIN_WCSLEN_REC; +typedef TEX_ERRET_REC (size_t) TEX_WCSLEN_REC; +TMD_RECHEAD (WCSLEN); + + +/*----------------------------------------------------------------------*/ +/* WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, const wchar_t *ws2, */ +/* size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws1[WCSSIZE]; + wchar_t ws2[WCSSIZE]; + size_t n; +} +TIN_WCSNCAT_REC; + +typedef TEX_WCSCAT_REC TEX_WCSNCAT_REC; +TMD_RECHEAD (WCSNCAT); + + +/*----------------------------------------------------------------------*/ +/* WCSNCMP: int *wcsncmp (const wchar_t *ws1, const wchar_t *ws2, */ +/* size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSNCAT_REC TIN_WCSNCMP_REC; +typedef TEX_ERRET_REC (int) TEX_WCSNCMP_REC; +TMD_RECHEAD (WCSNCMP); + + +/*----------------------------------------------------------------------*/ +/* WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, */ +/* size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws[WCSSIZE]; /* ws2: original string */ + size_t n; +} +TIN_WCSNCPY_REC; + +typedef TEX_WCSCPY_REC TEX_WCSNCPY_REC; +TMD_RECHEAD (WCSNCPY); + + +/*----------------------------------------------------------------------*/ +/* WCSPBRK: wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCSPN_REC TIN_WCSPBRK_REC; + +typedef struct +{ + TMD_ERRET (wchar_t *); + wchar_t wc; +} +TEX_WCSPBRK_REC; + +TMD_RECHEAD (WCSPBRK); + + +/*----------------------------------------------------------------------*/ +/* WCSRTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, size_t n, */ +/* mbstate_t *ps) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int s_flg; + int w_flg; /* don't need this */ + wchar_t ws[WCSSIZE]; + size_t n; + int t_flg; + int t_init; +} +TIN_WCSRTOMBS_REC; + +typedef struct +{ + TMD_ERRET (size_t); + char s[MBSSIZE]; +} +TEX_WCSRTOMBS_REC; + +TMD_RECHEAD (WCSRTOMBS); + + +/*----------------------------------------------------------------------*/ +/* WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCSPN_REC TIN_WCSSPN_REC; +typedef TEX_WCSCSPN_REC TEX_WCSSPN_REC; +TMD_RECHEAD (WCSSPN); + + +/*----------------------------------------------------------------------*/ +/* WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCSPN_REC TIN_WCSSTR_REC; +typedef TEX_ERRET_REC (wchar_t *) TEX_WCSSTR_REC; +TMD_RECHEAD (WCSSTR); + + +/*----------------------------------------------------------------------*/ +/* WCSTOD: double wcstod (const wchar_t *np, wchar_t **endp) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t np[WCSSIZE]; +} +TIN_WCSTOD_REC; + +typedef struct +{ + TMD_ERRET (double); + double val; + wchar_t fwc; +} +TEX_WCSTOD_REC; + +TMD_RECHEAD (WCSTOD); + + +/*----------------------------------------------------------------------*/ +/* WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm, */ +/* wchar_t **pt) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int w_flg; + wchar_t ws[WCSSIZE]; + wchar_t dt[WCSSIZE]; /* delimiter */ + } + seq[WCSTOK_SEQNUM]; +} +TIN_WCSTOK_REC; + +typedef struct +{ + struct + { + TMD_ERRET (wchar_t *); + wchar_t ws[WCSSIZE]; + } + seq[WCSTOK_SEQNUM]; +} +TEX_WCSTOK_REC; + +TMD_RECHEAD (WCSTOK); + + +/*----------------------------------------------------------------------*/ +/* WCSTOMBS: size_t wcstombs (char s, const wchar_t *ws, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int s_flg; + int w_flg; /* currently we don't need it. */ + wchar_t ws[WCSSIZE]; + size_t n; +} +TIN_WCSTOMBS_REC; + +typedef struct +{ + TMD_ERRET (size_t); + char s[MBSSIZE]; +} +TEX_WCSTOMBS_REC; + +TMD_RECHEAD (WCSTOMBS); + + +/*----------------------------------------------------------------------*/ +/* WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSNCPY_REC TIN_WCSWIDTH_REC; +typedef TEX_ERRET_REC (int) TEX_WCSWIDTH_REC; +TMD_RECHEAD (WCSWIDTH); + + +/*----------------------------------------------------------------------*/ +/* WCSXFRM: size_t wcsxfrm (wchar_t *ws1, const wchar_t *ws2, size_t n)*/ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t org1[WCSSIZE]; + wchar_t org2[WCSSIZE]; + int n1, n2; +} +TIN_WCSXFRM_REC; + +typedef TEX_ERRET_REC (size_t) TEX_WCSXFRM_REC; /* only for org2[] */ +TMD_RECHEAD (WCSXFRM); + + +/*----------------------------------------------------------------------*/ +/* WCTOB: int wctob (wint_t wc) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wint_t wc; +} +TIN_WCTOB_REC; + +typedef TEX_ERRET_REC (int) TEX_WCTOB_REC; +TMD_RECHEAD (WCTOB); + + +/*----------------------------------------------------------------------*/ +/* WCTOMB: int wctomb (char *s, wchar_t wc) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int s_flg; + wchar_t wc; +} +TIN_WCTOMB_REC; + +typedef struct +{ + TMD_ERRET (int); + char s[MBSSIZE]; +} +TEX_WCTOMB_REC; + +TMD_RECHEAD (WCTOMB); + + +/*----------------------------------------------------------------------*/ +/* WCTRANS: wctrans_t wctrans (const char *charclass) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char class[MBSSIZE]; +} +TIN_WCTRANS_REC; + +typedef TEX_ERRET_REC (wctrans_t) TEX_WCTRANS_REC; +TMD_RECHEAD (WCTRANS); + + +/*----------------------------------------------------------------------*/ +/* WCTYPE: wctype_t wctype (const char *class) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCTRANS_REC TIN_WCTYPE_REC; +typedef TEX_ERRET_REC (wctype_t) TEX_WCTYPE_REC; +TMD_RECHEAD (WCTYPE); + + +/*----------------------------------------------------------------------*/ +/* WCWIDTH: int wcwidth (wchar_t wc) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t wc; +} +TIN_WCWIDTH_REC; + +typedef TEX_ERRET_REC (int) TEX_WCWIDTH_REC; +TMD_RECHEAD (WCWIDTH); + +#endif /* TST_TYPES_H */ -- cgit v1.2.3