1 | /* |
2 | * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY |
3 | * |
4 | * FILE: dat_wctomb.c |
5 | * |
6 | * WCTOMB: int wctomb (char *s, wchar_t wc) |
7 | */ |
8 | |
9 | |
10 | /* |
11 | * FUNCTION: |
12 | * |
13 | * int wctomb (char *s, wchar_t wc); |
14 | * |
15 | * return: the number of bytes |
16 | * |
17 | * NOTE: |
18 | * |
19 | * o When you feed a null pointer for a string (s) to the function, |
20 | * set s_flg=0 instead of putting just a 'NULL' there. |
21 | * Even if you put a 'NULL', it means a null string as well as "". |
22 | * |
23 | * o When s is a null pointer, the function checks state dependency. |
24 | * |
25 | * state-dependent encoding - return NON-zero |
26 | * state-independent encoding - return 0 |
27 | * |
28 | * If state-dependent encoding is expected, set |
29 | * |
30 | * s_flg = 0, ret_flg = 0, ret_val = +1 |
31 | * |
32 | * If state-independent encoding is expected, set |
33 | * |
34 | * s_flg = 0, ret_flg = 0, ret_val = 0 |
35 | * |
36 | * |
37 | * When you set ret_flg=1, the test program simply compares an |
38 | * actual return value with an expected value. You can check |
39 | * state-independent case (return value is 0) in that way, but |
40 | * you can not check state-dependent case. So when you check |
41 | * state- dependency in this test function: tst_wctomb(), set |
42 | * ret_flg=0 always. It's a special case, and the test |
43 | * function takes care of it. |
44 | * |
45 | * Input Expect |
46 | * |
47 | * s_flg=0 ret_flg=0 |
48 | * | | |
49 | * { 0, 0 }, { 0, 0, 0, x, "" } |
50 | * | | |
51 | * not used ret_val: 0/+1 |
52 | * (expected val) |
53 | */ |
54 | |
55 | |
56 | TST_WCTOMB tst_wctomb_loc [] = { |
57 | { |
58 | { Twctomb, TST_LOC_de }, |
59 | { |
60 | /* #01 : normal case */ |
61 | { /*input.*/ { 1, 0x00C4 }, |
62 | /*expect*/ { 0,1,1, "Ä" }, |
63 | }, |
64 | /* #02 : normal case */ |
65 | { /*input.*/ { 1, 0x00DC }, |
66 | /*expect*/ { 0,1,1, "Ü" }, |
67 | }, |
68 | /* #03 : normal case */ |
69 | { /*input.*/ { 1, 0x0092 }, |
70 | /*expect*/ { 0,1,1, "\222" }, |
71 | }, |
72 | /* #04 : error case */ |
73 | { /*input.*/ { 1, 0x3041 }, |
74 | /*expect*/ { 0,1,-1, "" }, |
75 | }, |
76 | /* #05 : state dependency */ |
77 | { /*input.*/ { 0, 0x0000 }, |
78 | /*expect*/ { 0,0,0, "" }, |
79 | }, |
80 | { .is_last = 1 } |
81 | } |
82 | }, |
83 | { |
84 | { Twctomb, TST_LOC_enUS }, |
85 | { |
86 | /* #01 : normal case */ |
87 | { /*input.*/ { 1, 0x0041 }, |
88 | /*expect*/ { 0,1,1, "A" }, |
89 | }, |
90 | /* #02 : normal case */ |
91 | { /*input.*/ { 1, 0x0042 }, |
92 | /*expect*/ { 0,1,1, "B" }, |
93 | }, |
94 | /* #03 : error case */ |
95 | /* <WAIVER> */ |
96 | { /*input.*/ { 1, 0x00C4 }, |
97 | /*expect*/ { 0,1,-1, "" }, |
98 | }, |
99 | /* #04 : error case */ |
100 | { /*input.*/ { 1, 0x30A4 }, |
101 | /*expect*/ { 0,1,-1, "" }, |
102 | }, |
103 | /* #05 : state dependency */ |
104 | { /*input.*/ { 0, 0x0000 }, |
105 | /*expect*/ { 0,0,0, "" }, |
106 | }, |
107 | { .is_last = 1 } |
108 | } |
109 | }, |
110 | { |
111 | { Twctomb, TST_LOC_eucJP }, |
112 | { |
113 | /* #01 : normal case */ |
114 | { /*input.*/ { 1, 0x3042 }, |
115 | /*expect*/ { 0,1,2, "\244\242" }, |
116 | }, |
117 | /* #02 : normal case */ |
118 | { /*input.*/ { 1, 0x3044 }, |
119 | /*expect*/ { 0,1,2, "\244\244" }, |
120 | }, |
121 | /* #03 : normal case */ |
122 | { /*input.*/ { 1, 0x008E }, |
123 | /*expect*/ { 0,1,-1, "" }, |
124 | }, |
125 | /* #04 : jisX0212 */ |
126 | { /*input.*/ { 1, 0x00C4 }, |
127 | /*expect*/ { 0,1,3, "\217\252\243" }, /* jisx0210 returns 3 */ |
128 | }, |
129 | /* #05 : state dependency */ |
130 | { /*input.*/ { 0, 0x008E }, |
131 | /*expect*/ { 0,0,0, "" }, |
132 | }, |
133 | { .is_last = 1 } |
134 | } |
135 | }, |
136 | { |
137 | { Twctomb, TST_LOC_end } |
138 | } |
139 | }; |
140 | |