summaryrefslogtreecommitdiff
path: root/localedata/tests-mbwc/dat_mbtowc.c
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2000-06-29 07:13:12 +0000
committerAndreas Jaeger <aj@suse.de>2000-06-29 07:13:12 +0000
commit2e23c3cc3fede8cc080af74f1b4f124b12955138 (patch)
tree40f76b9203246a3e70247b56743b442313179732 /localedata/tests-mbwc/dat_mbtowc.c
parent4eeccd750dce53d7b168d227cb5cfcf70d674310 (diff)
Update.
2000-06-29 Andreas Jaeger <aj@suse.de> * Makefile (locale_test_suite): Add new test files. (tst_mblen-ENV): New. (tst_mbtowc-ENV): New. (tst_strcoll-ENV): New. (tst_strxfrm-ENV): New. (tst_wctomb-ENV): New. * tests-mbwc/tst_wctomb.c: New test file from Shoji Kuwabara <kuwahara@cthulhu.engr.sgi.com>. * tests-mbwc/dat_wctomb.c: Likewise. * tests-mbwc/tst_mbtowc.c: Likewise. * tests-mbwc/dat_mbtowc.c: Likewise. * tests-mbwc/tst_strxfrm.c: Likewise. * tests-mbwc/dat_strxfrm.c: Likewise. * tests-mbwc/dat_strcoll.c: Likewise. * tests-mbwc/tst_strcoll.c: Likewise. * tests-mbwc/tst_mblen.c: Likewise. * tests-mbwc/dat_mblen.c: Likewise.
Diffstat (limited to 'localedata/tests-mbwc/dat_mbtowc.c')
-rw-r--r--localedata/tests-mbwc/dat_mbtowc.c327
1 files changed, 327 insertions, 0 deletions
diff --git a/localedata/tests-mbwc/dat_mbtowc.c b/localedata/tests-mbwc/dat_mbtowc.c
new file mode 100644
index 0000000000..1e3359465c
--- /dev/null
+++ b/localedata/tests-mbwc/dat_mbtowc.c
@@ -0,0 +1,327 @@
+/*
+ * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
+ *
+ * FILE: dat_mbtowc.c
+ *
+ * MBTOWC: int mbtowc (wchar_t *wp, char *s, size_t n);
+ */
+
+/* NOTE:
+ *
+ * int mbtowc (wchar_t *wp, char *s, size_t n);
+ *
+ * where n: a maximum number of bytes
+ * return: the number of bytes
+ *
+ *
+ * o When you feed a null pointer for a string (s) to the function,
+ * set s_flg=0 instead of putting just a 'NULL' there.
+ * Even if you put a 'NULL', it means a null string as well as "".
+ *
+ * o When s is a null pointer, the function checks state dependency.
+ *
+ * state-dependent encoding - return NON-zero
+ * state-independent encoding - return 0
+ *
+ * If state-dependent encoding is expected, set
+ *
+ * s_flg = 0, ret_flg = 0, ret_val = +1
+ *
+ * If state-independent encoding is expected, set
+ *
+ * s_flg = 0, ret_flg = 0, ret_val = 0
+ *
+ *
+ * When you set ret_flg=1, the test program simply compares
+ * an actual return value with an expected value. You can
+ * check state-independent case (return value is 0) in that
+ * way, but you can not check state-dependent case. So when
+ * you check state- dependency in this test function:
+ * tst_mbtowc(), set ret_flg=0 always. It's a special case
+ * and the test function takes care of it.
+ *
+ * w_flg
+ * | s: (a null string; can't be (char *)NULL)
+ * | |
+ * input. { 1, 0, (char)NULL, MB_LEN_MAX },
+ * |
+ * s_flg=0: makes _s_ a null pointer.
+ *
+ * expect { 0,0,0,x, 0x0000 },
+ * | |
+ * | ret_val: 0/+1
+ * ret_flg=0
+ *
+ *
+ * Test data for State dependent encodings:
+ *
+ * mbtowc( NULL, NULL, 0 ); ... first data
+ * mbtowc( &wc, s1, n1 ); ... second data
+ * mbtowc( &wc, s2, n2 ); ... third data
+ * */
+
+#include <limits.h>
+
+TST_MBTOWC tst_mbtowc_loc [] = {
+ {
+ { Tmbtowc, TST_LOC_de },
+ {
+ { /*----------------- #01 -----------------*/
+ {
+ {
+ { 1, 1, "üäö", 1 },
+ { 1, 1, "üäö", 2 },
+ { 1, 1, "üäö", MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 1, 0x00FC },
+ { 0, 0, 1, 1, 0x00FC },
+ { 0, 0, 1, 1, 0x00FC },
+ }
+ }
+ },
+ { /*----------------- #02 -----------------*/
+ {
+ {
+ { 1, 1, "\177", MB_LEN_MAX },
+ { 1, 1, "\200", MB_LEN_MAX },
+ { 1, 1, "\201", MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 1, 0x007F },
+ { 1, 0, 1, 1, 0x0080 },
+ { 1, 0, 1, 1, 0x0081 },
+ }
+ }
+ },
+ { /*----------------- #03 -----------------*/
+ {
+ {
+ { 1, 1, "", MB_LEN_MAX },
+ { 0, 1, "üäö", 1 },
+ { 0, 1, "üäö", 2 },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 0, 0x0000 },
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 1, 1, 0x0000 },
+ }
+ }
+ },
+ { /*----------------- #04 -----------------*/
+ {
+ {
+ { 0, 1, "üäö", MB_LEN_MAX },
+ { 0, 1, "\177", MB_LEN_MAX },
+ { 0, 1, "", MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 1, 0, 0x0000 },
+ }
+ }
+ },
+ { /*----------------- #05 -----------------*/
+ {
+ {
+ { 0, 1, "üäö", MB_LEN_MAX },
+ { 0, 1, "\177", MB_LEN_MAX },
+ { 0, 0, (char)NULL, MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 0, 0, 0x0000 },
+ }
+ }
+ },
+ { is_last: 1 }
+ }
+ },
+ {
+ { Tmbtowc, TST_LOC_enUS },
+ {
+ { /*----------------- #01 -----------------*/
+ {
+ {
+ { 1, 1, "ABC", 1 },
+ { 1, 1, "ABC", 2 },
+ { 1, 1, "ABC", MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 1, 0x0041 },
+ { 0, 0, 1, 1, 0x0041 },
+ { 0, 0, 1, 1, 0x0041 },
+ }
+ }
+ },
+ { /*----------------- #02 -----------------*/
+ {
+ {
+ { 1, 1, "\177", MB_LEN_MAX },
+ { 1, 1, "\200", MB_LEN_MAX },
+ { 1, 1, "\201", MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 1, 0x007F },
+ { 1, EILSEQ, 1, -1, 0x0000 },
+ { 1, EILSEQ, 1, -1, 0x0000 },
+ }
+ }
+ },
+ { /*----------------- #03 -----------------*/
+ {
+ {
+ { 1, 1, "", MB_LEN_MAX },
+ { 0, 1, "ABC", 1 },
+ { 0, 1, "ABC", 2 },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 0, 0x0000 },
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 1, 1, 0x0000 },
+ }
+ }
+ },
+ { /*----------------- #04 -----------------*/
+ {
+ {
+ { 0, 1, "ABC", MB_LEN_MAX },
+ { 0, 1, "\177", MB_LEN_MAX },
+ { 0, 1, "", MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 1, 0, 0x0000 },
+ }
+ }
+ },
+ { /*----------------- #05 -----------------*/
+ {
+ {
+ { 0, 1, "ABC", MB_LEN_MAX },
+ { 0, 1, "\177", MB_LEN_MAX },
+ { 0, 0, (char)NULL, MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 1, 1, 0x0000 },
+ { 0, 0, 0, 0, 0x0000 },
+ }
+ }
+ },
+ { is_last: 1 }
+ }
+ },
+ {
+ { Tmbtowc, TST_LOC_eucJP },
+ {
+ { /*----------------- #01 -----------------*/
+ {
+ {
+ { 1, 1, "\244\242A", 1 },
+ { 1, 1, "\244\242A", 2 },
+ { 1, 1, "\244\242A", MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 1, EILSEQ, 1, -1, 0x0000 },
+ { 0, 0, 1, 2, 0x3042 },
+ { 0, 0, 1, 2, 0x3042 },
+ }
+ }
+ },
+ { /*----------------- #02 -----------------*/
+ {
+ {
+ { 1, 1, "\177\244\242", MB_LEN_MAX },
+ { 1, 1, "\200\244\242", MB_LEN_MAX },
+ { 1, 1, "\201\244\242", MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, +1, 0x007F },
+ { 1, EILSEQ, 1, -1, 0x0000 },
+ { 1, EILSEQ, 1, -1, 0x0000 },
+ }
+ }
+ },
+ { /*----------------- #03 -----------------*/
+ {
+ {
+ { 1, 1, "", MB_LEN_MAX },
+ { 0, 1, "\244\242A", 1 },
+ { 0, 1, "\244\242A", 2 },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 0, 0x0000 },
+ { 1, EILSEQ, 1, -1, 0x0000 },
+ { 0, 0, 1, 2, 0x0000 },
+ }
+ }
+ },
+ { /*----------------- #04 -----------------*/
+ {
+ {
+ { 0, 1, "\244\242A", MB_LEN_MAX },
+ { 0, 1, "\177\244\242", MB_LEN_MAX },
+ { 0, 1, "", MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 2, 0x0000 },
+ { 0, 0, 1, +1, 0x0000 },
+ { 0, 0, 1, 0, 0x0000 },
+ }
+ }
+ },
+ { /*----------------- #05 -----------------*/
+ {
+ {
+ { 0, 1, "\244\242A", MB_LEN_MAX },
+ { 0, 1, "\177\244\242", MB_LEN_MAX },
+ { 0, 0, (char)NULL, MB_LEN_MAX },
+ }
+ },
+ {
+ {
+ { 0, 0, 1, 2, 0x0000 },
+ { 0, 0, 1, +1, 0x0000 },
+ { 0, 0, 0, 0, 0x0000 },
+ }
+ }
+ },
+ { is_last: 1 }
+ }
+ },
+ {
+ { Tmbtowc, TST_LOC_end }
+ }
+};