summaryrefslogtreecommitdiff
path: root/test/locale-mbwc/tst_wcstok.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/locale-mbwc/tst_wcstok.c')
-rw-r--r--test/locale-mbwc/tst_wcstok.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/test/locale-mbwc/tst_wcstok.c b/test/locale-mbwc/tst_wcstok.c
new file mode 100644
index 0000000..1222b97
--- /dev/null
+++ b/test/locale-mbwc/tst_wcstok.c
@@ -0,0 +1,96 @@
+/*
+ WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm, wchar_t **pt);
+*/
+
+
+#define TST_FUNCTION wcstok
+
+#include "tsp_common.c"
+#include "dat_wcstok.c"
+
+int
+tst_wcstok (FILE * fp, int debug_flg)
+{
+ TST_DECL_VARS (wchar_t *);
+ char w_flg;
+ wchar_t *ws;
+ wchar_t *dt, *pt;
+ wchar_t *ws_ex;
+ int err, i;
+
+ TST_DO_TEST (wcstok)
+ {
+ TST_HEAD_LOCALE (wcstok, S_WCSTOK);
+ TST_DO_REC (wcstok)
+ {
+ TST_DO_SEQ (WCSTOK_SEQNUM)
+ {
+ TST_GET_ERRET_SEQ (wcstok);
+ w_flg = TST_INPUT_SEQ (wcstok).w_flg;
+ ws = (w_flg) ? TST_INPUT_SEQ (wcstok).ws : NULL;
+ dt = TST_INPUT_SEQ (wcstok).dt;
+
+ ret = wcstok (ws, dt, &pt);
+
+ if (debug_flg)
+ {
+ fprintf (stdout, "wcstok() [ %s : %d : %d ] *ret = 0x%lx\n",
+ locale, rec + 1, seq_num + 1, (unsigned long int) *ret);
+ if (pt && *pt)
+ {
+ fprintf (stdout, " *pt = 0x%lx\n",
+ (unsigned long int) *pt);
+ }
+ }
+
+ TST_IF_RETURN (S_WCSTOK)
+ {
+ };
+
+ if (ret != NULL)
+ {
+ ws_ex = TST_EXPECT_SEQ (wcstok).ws;
+
+ /* XXX: REVISIT : insufficient conditions */
+ for (err = 0, i = 0; i < WCSSIZE; i++)
+ {
+ if (ret[i] == L'\0' && ws_ex[i] == L'\0')
+ {
+ break;
+ }
+
+ if (debug_flg)
+ {
+ fprintf (stderr,
+ " ret[%d] = 0x%lx <-> "
+ "0x%lx = ws_ex[%d]\n",
+ i, (unsigned long int) ret[i],
+ (unsigned long int) ws_ex[i], i);
+ }
+
+ if (ret[i] != ws_ex[i])
+ {
+ err++;
+ err_count++;
+ Result (C_FAILURE, S_WCSTOK, CASE_3,
+ "the token is different from an expected string");
+ break;
+ }
+
+ if (ret[i] == L'\0' || ws_ex[i] == L'\0')
+ {
+ break;
+ }
+ }
+
+ if (!err)
+ {
+ Result (C_SUCCESS, S_WCSTOK, CASE_3, MS_PASSED);
+ }
+ }
+ }
+ }
+ }
+
+ return err_count;
+}