diff options
Diffstat (limited to 'test/locale-mbwc/tst_towctrans.c')
-rw-r--r-- | test/locale-mbwc/tst_towctrans.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/test/locale-mbwc/tst_towctrans.c b/test/locale-mbwc/tst_towctrans.c new file mode 100644 index 000000000..1d874dc0f --- /dev/null +++ b/test/locale-mbwc/tst_towctrans.c @@ -0,0 +1,82 @@ +/* + TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t desc); +*/ + +#define TST_FUNCTION towctrans + +#include "tsp_common.c" +#include "dat_towctrans.c" + + +int +tst_towctrans (FILE *fp, int debug_flg) +{ + TST_DECL_VARS (wint_t); + wint_t wc; + const char *ts; +#if SHOJI_IS_RIGHT + int dummy=0; +#endif + wctrans_t wto; + + TST_DO_TEST (towctrans) + { + TST_HEAD_LOCALE (towctrans, S_TOWCTRANS); + TST_DO_REC (towctrans) + { + TST_GET_ERRET (towctrans); + wc = TST_INPUT (towctrans).wc; + ts = TST_INPUT (towctrans).ts; + +#if SHOJI_IS_RIGHT + if ((wto = wctrans (ts)) == (wctrans_t) 0) + { +#if 0 + result (fp, C_IGNORED, S_TOWCTRANS, locale, rec+1, seq_num+1, 3, + "Skip this data because the wctrans object is not invalid."); + warn_count++; + continue; +#else + wto = &dummy; /* not good ... */ +#endif + if (debug_flg) + { + fprintf (stdout, "towctrans() ------ wctrans() returnd 0.\n"); + } + } +#else + wto = wctrans (ts); +#endif + + TST_CLEAR_ERRNO; + ret = towctrans (wc, wto); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "towctrans() [ %s : %d ] ret = 0x%x\n", + locale, rec+1, ret); + fprintf (stdout, " errno = %d\n", + errno_save); + } + + TST_IF_RETURN (S_TOWCTRANS) + { + if (ret != 0) + { + result (fp, C_SUCCESS, S_TOWCTRANS, locale, rec+1, + seq_num+1, 3, MS_PASSED); + } + else + { + err_count++; + result (fp, C_FAILURE, S_TOWCTRANS, locale, rec+1, + seq_num+1, 3, + "the function returned 0, but should be non-zero"); + } + } + } + } + + return err_count; +} |