summaryrefslogtreecommitdiff
path: root/localedata/tests-mbwc/dat_wctomb.c
blob: 7394ca530bd3abf5dcddae37737d34274a0544fe (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
/*
 *  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 }
    }
  },
  {
    { 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 }
    }
  },
  {
    { Twctomb, TST_LOC_end }
  }
};