1 /*
2  *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
3  *
4  *	 FILE:	dat_swscanf.c
5  *
6  *	 SWSCANF:  int	swscanf (const wchar_t *s, const wchar_t *fmt, ...);
7  */
8 
9 
10 #include <errno.h>
11 #include <stdlib.h>
12 #include "tst_types.h"
13 #include "tgn_locdef.h"
14 
15 
16 TST_SWSCANF tst_swscanf_loc [] =
17 {
18   {
19     { Tswscanf, TST_LOC_de },
20     {
21       /*------------------------ 01 -----------------------*/
22       { { {
23 	0x002D, 0x0031,		0x003A,	   /* %d: -1   */
24 	0x0032,			0x003A,	   /* %u:  2   */
25 	0x0033, 0x002C, 0x0033, 0x003A,	   /* %f:  3.3 */
26 	0x00E4,			0x003A,	   /* %c: '�'  */
27 	0x00C4, 0x00DC, 0x0000, 0x0000,	   /* %s: "��" */
28       },
29 	  L"%d:%u:%f:%c:%s", 0
30       },
31 	{ /* The fields are: err_val, ret_flag, ret_val,
32 	     val_int, val_uns, val_flt, val_c, val_s, val_S.  */
33 	  0,1,5,
34 	  -1, 2, 3.3, '�', "��", { 0x0000, },
35 	},
36       },
37       /*------------------------ 02 -----------------------*/
38       { { {
39 	0x00E4, 0x00C4, 0x0000		       /* "��" */
40       },
41 	  L"%lc", 'C'
42       },
43 	{ 0,1,1,
44 	  0,0,0,0,"", { 0x00E4, 0x0000 },
45 	},
46       },
47       /*------------------------ 03 -----------------------*/
48       { { {
49 	0x00E4, 0x00C4, 0x0000		       /* "��" */
50       },
51 	  L"%ls", 'S'
52       },
53 	{ 0,1,1,
54 	  0,0,0,0,"", { 0x00E4, 0x00C4, 0x0000 },
55 	},
56       },
57       /*------------------------ 04 -----------------------*/
58       /* <NO_WAIVER> x 2 */
59       { { {
60 	0x00E4, 0x00C4, 0x0000		       /* "��" */
61       },
62 	  L"1%d:2%d:3%d:4%d:5%d:6%d:7%d:8%d:9%d", 0
63       },
64 #ifdef SHOJI_IS_RIGHT
65 	{ 1,EINVAL,1,WEOF,
66 	  0,0,0,0,"", { 0x0000 },
67 #else
68 	{ 0,1,0,
69 	  0,0,0,0,"", { 0x0000 },
70 #endif
71 	},
72       },
73       /*---------------------------------------------------*/
74       { .is_last = 1}	/* Last element.  */
75     }
76   },
77   {
78     { Tswscanf, TST_LOC_enUS },
79     {
80       /*------------------------ 01 -----------------------*/
81       { { { 0x002D, 0x0031,					    0x003A,
82 	    0x0032,						    0x003A,
83 	    0x0035, 0x0034, 0x002E, 0x0033, 0x0045, 0x002D, 0x0031, 0x003A,
84 	    0x0041,						    0x003A,
85 	    0x0061, 0x0062, 0x0000,				    0x0000,
86       },
87 	  L"%d:%u:%f:%c:%s", 0
88       },
89 	{ 0,1,5,
90 	  -1, 2, 5.43, 'A', "ab", { 0x0000 },
91 	},
92       },
93       /*------------------------ 02 -----------------------*/
94       /* <NO_WAIVER> x 2 */
95       { { {
96 	0x0063, 0x0064, 0x0000
97       },
98 	  L"%C", 'C'
99       },
100 	{ 0,1,1,
101 	  0,0,0,0,"", { 0x0063, 0x0000 },
102 	},
103       },
104       /*------------------------ 03 -----------------------*/
105       { { {
106 	0x0063, 0x0064, 0x0000
107       },
108 	  L"%S", 'S'
109       },
110 	{ 0,1,1,
111 	  0,0,0,0,"", { 0x0063, 0x0064, 0x0000 },
112 	},
113       },
114       /*---------------------------------------------------*/
115       { .is_last = 1}	/* Last element.  */
116     }
117   },
118   {
119 #if 0
120     { Tswscanf, TST_LOC_eucJP },
121 #else
122     { Tswscanf, TST_LOC_ja_UTF8 },
123 #endif
124     {
125       /*------------------------ 01 -----------------------*/
126       { { { 0x002D, 0x0031,	    0x003A,
127 	    0x0032,		    0x003A,
128 	    0x0033, 0x002E, 0x0033, 0x003A,
129 	    0x0062,		    0x003A,
130 	    0x0061, 0x0062, 0x0000, 0x0000,
131       },
132 	  L"%d:%u:%f:%c:%s", 0
133       },
134 	{ 0,1,5,
135 	  -1, 2, 3.3, 'b', "ab", { 0x0000 }
136 	},
137       },
138       /*------------------------ 02 -----------------------*/
139       { { {
140 	0x30A2, 0x30A4, 0x0000
141       },
142 	  L"%ls", 'S'
143       },
144 	{ 0,1,1,
145 	  0,0,0,0,"", { 0x30A2, 0x30A4, 0x0000 }
146 	},
147       },
148       /*------------------------ 03 -----------------------*/
149       { { {
150 	0x0031,			0x003A,
151 	0x0030,			0x003A,
152 	0x0033, 0x002E, 0x0039, 0x003A,
153 	0x0061,			0x003A,
154 	0x0063, 0x0064, 0x0000, 0x0000,
155       },
156 	  L"%2$d:%1$u:%3$f:%4$c:%5$s", 0
157       },
158 	{ 0,1,5,
159 	  0, 1, 3.9, 'a', "cd", { 0x0000 }
160 	},
161       },
162 #ifdef SHOJI_IS_RIGHT
163       /* XXX This test does not make sense.  The format string is
164 	 L"\x1\x2\x25\x53" and it is supposed to match the words
165 	 0x30A2, 0x30A4, 0x0001.  */
166       /*------------------------ 04 -----------------------*/
167       /* <NO_WAIVER> x 2 */
168       { { {
169 	0x30A2, 0x30A4, 0x0001, 0x0000
170       },
171 	  { 0x0001,0x0002,0x0025,0x0053,0x0000 }, 'S'
172       },
173 	{ EILSEQ,1,EOF,
174 	  0,0,0,0,"", { 0x0000 }
175 	},
176       },
177 #endif
178       /*---------------------------------------------------*/
179       { .is_last = 1}	/* Last element.  */
180     }
181   },
182   {
183     { Tswscanf, TST_LOC_end }
184   }
185 };
186