aboutsummaryrefslogtreecommitdiff
path: root/localedata/tests-mbwc/tst_wcstombs.c
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2000-06-29 10:36:12 +0000
committerAndreas Jaeger <aj@suse.de>2000-06-29 10:36:12 +0000
commit5ca8accdcd234f3479a9b686b3519768be9af69b (patch)
tree94acd3d8caae432164e69392d278a1a0539f8633 /localedata/tests-mbwc/tst_wcstombs.c
parentee6c9d77a3407e265106181a0e543f59b635f757 (diff)
downloadglibc-5ca8accdcd234f3479a9b686b3519768be9af69b.zip
glibc-5ca8accdcd234f3479a9b686b3519768be9af69b.tar.gz
glibc-5ca8accdcd234f3479a9b686b3519768be9af69b.tar.bz2
Update.
(tst_mbrtowc-ENV): New. (tst_mbsrtowcs-ENV): New. (tst_mbstowcs-ENV): New. (tst_strfmon-ENV): New. (tst_wcrtomb-ENV): New. (tst_wcsrtombs-ENV): New. (tst_wcstod-ENV): New. (tst_wcstok-ENV): New. (tst_wcstombs-ENV): New. * tests-mbwc/dat_wcstok.c: Likewise. * tests-mbwc/tst_wcstok.c: Likewise. * tests-mbwc/dat_wcstod.c: Likewise. * tests-mbwc/tst_wcstod.c: Likewise. * tests-mbwc/dat_mbrtowc.c: Likewise. * tests-mbwc/tst_mbrtowc.c: Likewise. * tests-mbwc/dat_wcsrtombs.c: Likewise. * tests-mbwc/tst_wcsrtombs.c: Likewise. * tests-mbwc/dat_wcstombs.c: Likewise. * tests-mbwc/tst_wcstombs.c: Likewise. * tests-mbwc/dat_mbsrtowcs.c: Likewise. * tests-mbwc/tst_mbsrtowcs.c: Likewise. * tests-mbwc/dat_wcrtomb.c: Likewise. * tests-mbwc/tst_wcrtomb.c: Likewise. * tests-mbwc/dat_mbstowcs.c: Likewise. * tests-mbwc/tst_mbstowcs.c: Likewise. * tests-mbwc/dat_strfmon.c: Likewise. * tests-mbwc/tst_strfmon.c: Likewise.
Diffstat (limited to 'localedata/tests-mbwc/tst_wcstombs.c')
-rw-r--r--localedata/tests-mbwc/tst_wcstombs.c115
1 files changed, 115 insertions, 0 deletions
diff --git a/localedata/tests-mbwc/tst_wcstombs.c b/localedata/tests-mbwc/tst_wcstombs.c
new file mode 100644
index 0000000..64a327d
--- /dev/null
+++ b/localedata/tests-mbwc/tst_wcstombs.c
@@ -0,0 +1,115 @@
+/*
+ WCSTOMBS: size_t wcstombs (char *s, const wchar_t *ws, size_t n)
+*/
+
+#define TST_FUNCTION wcstombs
+
+#include "tsp_common.c"
+#include "dat_wcstombs.c"
+
+#define MARK_VAL 0x01
+
+int
+tst_wcstombs (FILE * fp, int debug_flg)
+{
+ TST_DECL_VARS (size_t);
+ char s_flg, n;
+ wchar_t *ws;
+ char s[MBSSIZE], *s_in;
+ int err, i;
+ char *s_ex;
+
+ TST_DO_TEST (wcstombs)
+ {
+ TST_HEAD_LOCALE (wcstombs, S_WCSTOMBS);
+ TST_DO_REC (wcstombs)
+ {
+ TST_GET_ERRET (wcstombs);
+ memset (s, MARK_VAL, MBSSIZE);
+
+ s_flg = TST_INPUT (wcstombs).s_flg;
+ s_in = (s_flg == 1) ? s : (char *) NULL;
+ ws = TST_INPUT (wcstombs).ws;
+ n = TST_INPUT (wcstombs).n;
+
+ TST_CLEAR_ERRNO;
+ ret = wcstombs (s_in, ws, n);
+ TST_SAVE_ERRNO;
+
+ if (debug_flg)
+ {
+ fprintf (stdout, "wcstombs: ret = %d\n", ret);
+ }
+
+ TST_IF_RETURN (S_WCSTOMBS)
+ {
+ };
+
+ if (s_in != NULL && ret != (size_t) - 1)
+ {
+ /* No definition for s, when error occurs. */
+ s_ex = TST_EXPECT (wcstombs).s;
+
+ for (err = 0, i = 0; i <= ret && i < MBSSIZE; i++)
+ {
+ if (debug_flg)
+ {
+ fprintf (stdout,
+ " : s[%d] = 0x%hx <-> 0x%hx = s_ex[%d]\n", i,
+ s[i], s_ex[i], i);
+ }
+
+ if (i == ret && ret == n) /* no null termination */
+ {
+ if (s[i] == MARK_VAL)
+ {
+ Result (C_SUCCESS, S_WCSTOMBS, CASE_4, MS_PASSED);
+ }
+ else
+ {
+ err_count++;
+ Result (C_FAILURE, S_WCSTOMBS, CASE_4,
+ "should not be null terminated "
+ "(it may be a null char), but it is");
+ }
+
+ break;
+ }
+
+ if (i == ret && ret < n) /* null termination */
+ {
+ if (s[i] == 0)
+ {
+ Result (C_SUCCESS, S_WCSTOMBS, CASE_5, MS_PASSED);
+ }
+ else
+ {
+ err_count++;
+ Result (C_FAILURE, S_WCSTOMBS, CASE_5,
+ "should be null terminated, but it is not");
+ }
+
+ break;
+ }
+
+ if (s[i] != s_ex[i])
+ {
+ err++;
+ err_count++;
+ Result (C_FAILURE, S_WCSTOMBS, CASE_6,
+ "converted string is different from an "
+ "expected string");
+ break;
+ }
+ }
+
+ if (!err)
+ {
+ Result (C_SUCCESS, S_WCSTOMBS, CASE_6, MS_PASSED);
+ }
+ }
+ }
+ }
+
+ return err_count;
+}