Skip to content
Permalink
78575a842b
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
729 lines (563 sloc) 16.2 KB
/*
* 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 <stdio.h>
#include <wchar.h>
#include <wctype.h>
#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 */