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 #if 0
111   {
112     { Twctomb, TST_LOC_eucJP },
113     {
114       /* #01 : normal case		   */
115       { /*input.*/ { 1,	   0x3042  },
116 	/*expect*/ { 0,1,2,  "\244\242"   },
117       },
118       /* #02 : normal case		   */
119       { /*input.*/ { 1,	   0x3044  },
120 	/*expect*/ { 0,1,2,  "\244\244"   },
121       },
122       /* #03 : normal case		   */
123       { /*input.*/ { 1,	   0x008E  },
124 	/*expect*/ { 0,1,-1, ""	   },
125       },
126       /* #04 : jisX0212		   */
127       { /*input.*/ { 1,	   0x00C4	  },
128 	/*expect*/ { 0,1,3,  "\217\252\243" }, /* jisx0210  returns 3 */
129       },
130       /* #05 : state dependency	   */
131       { /*input.*/ { 0,	   0x008E  },
132 	/*expect*/ { 0,0,0,  ""	   },
133       },
134       { .is_last = 1 }
135     }
136   },
137 #else
138   {
139     { Twctomb, TST_LOC_ja_UTF8 },
140     {
141       /* #01 : normal case		   */
142       { /*input.*/ { 1,	   0x3042  },
143 	/*expect*/ { 0,1,3,  "\343\201\202"   },
144       },
145       /* #02 : normal case		   */
146       { /*input.*/ { 1,	   0x3044  },
147 	/*expect*/ { 0,1,3,  "\343\201\204"   },
148       },
149       /* #03 : normal case		   */
150       { /*input.*/ { 1,	   0x008E  },
151 	/*expect*/ { 0,1,2, "\302\216"	   },
152       },
153       /* #04 : jisX0212		   */
154       { /*input.*/ { 1,	   0x00C4	  },
155 	/*expect*/ { 0,1,2,  "\303\204" }, /* jisx0210  returns 3 */
156       },
157       /* #05 : state dependency	   */
158       { /*input.*/ { 0,	   0x008E  },
159 	/*expect*/ { 0,0,0,  ""	   },
160       },
161       { .is_last = 1 }
162     }
163   },
164 #endif
165   {
166     { Twctomb, TST_LOC_end }
167   }
168 };
169