summaryrefslogtreecommitdiff
path: root/test/locale-mbwc/dat_wctomb.c
blob: 0ec3a9c0d065b00c902833b5754e781303a9a5ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/*
 *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
 *
 *	 FILE:	dat_wctomb.c
 *
 *	 WCTOMB:  int wctomb (char *s, wchar_t wc)
 */


/*
 *  FUNCTION:
 *
 *	  int  wctomb (char *s, wchar_t wc);
 *
 *	       return: the number of bytes
 *
 *  NOTE:
 *
 *	 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_wctomb(), set
 *	   ret_flg=0 always. It's a special case, and the test
 *	   function takes care of it.
 *
 *	      Input	  Expect
 *
 *		s_flg=0		  ret_flg=0
 *		|		  |
 *	      { 0, 0 },	  { 0, 0, 0,  x,  "" }
 *		   |		      |
 *		   not used	      ret_val: 0/+1
 * (expected val)
 */


TST_WCTOMB tst_wctomb_loc [] = {
  {
    { Twctomb, TST_LOC_de },
    {
      /* #01 : normal case		   */
      { /*input.*/ { 1,	   0x00C4  },
	/*expect*/ { 0,1,1,  "Ä"	   },
      },
      /* #02 : normal case		   */
      { /*input.*/ { 1,	   0x00DC  },
	/*expect*/ { 0,1,1,  "Ü"	   },
      },
      /* #03 : normal case		   */
      { /*input.*/ { 1,	   0x0092  },
	/*expect*/ { 0,1,1,  "\222"  },
      },
      /* #04 : error case		   */
      { /*input.*/ { 1,	   0x3041  },
	/*expect*/ { 0,1,-1, ""	   },
      },
      /* #05 : state dependency	   */
      { /*input.*/ { 0,	   0x0000  },
	/*expect*/ { 0,0,0,  ""	   },
      },
      { .is_last = 1 }
    }
  },
  {
    { Twctomb, TST_LOC_enUS },
    {
      /* #01 : normal case		   */
      { /*input.*/ { 1,	   0x0041  },
	/*expect*/ { 0,1,1,  "A"	   },
      },
      /* #02 : normal case		   */
      { /*input.*/ { 1,	   0x0042  },
	/*expect*/ { 0,1,1,  "B"	   },
      },
      /* #03 : error case		   */
      /* <WAIVER> */
      { /*input.*/ { 1,	   0x00C4  },
	/*expect*/ { 0,1,-1, ""	   },
      },
      /* #04 : error case		   */
      { /*input.*/ { 1,	   0x30A4  },
	/*expect*/ { 0,1,-1, ""	   },
      },
      /* #05 : state dependency	   */
      { /*input.*/ { 0,	   0x0000  },
	/*expect*/ { 0,0,0,  ""	   },
      },
      { .is_last = 1 }
    }
  },
#if 0
  {
    { Twctomb, TST_LOC_eucJP },
    {
      /* #01 : normal case		   */
      { /*input.*/ { 1,	   0x3042  },
	/*expect*/ { 0,1,2,  "\244\242"   },
      },
      /* #02 : normal case		   */
      { /*input.*/ { 1,	   0x3044  },
	/*expect*/ { 0,1,2,  "\244\244"   },
      },
      /* #03 : normal case		   */
      { /*input.*/ { 1,	   0x008E  },
	/*expect*/ { 0,1,-1, ""	   },
      },
      /* #04 : jisX0212		   */
      { /*input.*/ { 1,	   0x00C4	  },
	/*expect*/ { 0,1,3,  "\217\252\243" }, /* jisx0210  returns 3 */
      },
      /* #05 : state dependency	   */
      { /*input.*/ { 0,	   0x008E  },
	/*expect*/ { 0,0,0,  ""	   },
      },
      { .is_last = 1 }
    }
  },
#else
  {
    { Twctomb, TST_LOC_ja_UTF8 },
    {
      /* #01 : normal case		   */
      { /*input.*/ { 1,	   0x3042  },
	/*expect*/ { 0,1,3,  "\343\201\202"   },
      },
      /* #02 : normal case		   */
      { /*input.*/ { 1,	   0x3044  },
	/*expect*/ { 0,1,3,  "\343\201\204"   },
      },
      /* #03 : normal case		   */
      { /*input.*/ { 1,	   0x008E  },
	/*expect*/ { 0,1,2, "\302\216"	   },
      },
      /* #04 : jisX0212		   */
      { /*input.*/ { 1,	   0x00C4	  },
	/*expect*/ { 0,1,2,  "\303\204" }, /* jisx0210  returns 3 */
      },
      /* #05 : state dependency	   */
      { /*input.*/ { 0,	   0x008E  },
	/*expect*/ { 0,0,0,  ""	   },
      },
      { .is_last = 1 }
    }
  },
#endif
  {
    { Twctomb, TST_LOC_end }
  }
};