1*03a78d15Sespie // 2002-05-10 ghazi
2*03a78d15Sespie 
3*03a78d15Sespie // Copyright (C) 2002 Free Software Foundation, Inc.
4*03a78d15Sespie //
5*03a78d15Sespie // This file is part of the GNU ISO C++ Library.  This library is free
6*03a78d15Sespie // software; you can redistribute it and/or modify it under the
7*03a78d15Sespie // terms of the GNU General Public License as published by the
8*03a78d15Sespie // Free Software Foundation; either version 2, or (at your option)
9*03a78d15Sespie // any later version.
10*03a78d15Sespie 
11*03a78d15Sespie // This library is distributed in the hope that it will be useful,
12*03a78d15Sespie // but WITHOUT ANY WARRANTY; without even the implied warranty of
13*03a78d15Sespie // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*03a78d15Sespie // GNU General Public License for more details.
15*03a78d15Sespie 
16*03a78d15Sespie // You should have received a copy of the GNU General Public License along
17*03a78d15Sespie // with this library; see the file COPYING.  If not, write to the Free
18*03a78d15Sespie // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19*03a78d15Sespie // USA.
20*03a78d15Sespie 
21*03a78d15Sespie // As a special exception, you may use this file as part of a free software
22*03a78d15Sespie // library without restriction.  Specifically, if other files instantiate
23*03a78d15Sespie // templates or use macros or inline functions from this file, or you compile
24*03a78d15Sespie // this file and link it with other files to produce an executable, this
25*03a78d15Sespie // file does not by itself cause the resulting executable to be covered by
26*03a78d15Sespie // the GNU General Public License.  This exception does not however
27*03a78d15Sespie // invalidate any other reasons why the executable file might be covered by
28*03a78d15Sespie // the GNU General Public License.
29*03a78d15Sespie 
30*03a78d15Sespie // { dg-do run }
31*03a78d15Sespie 
32*03a78d15Sespie #include <locale>
33*03a78d15Sespie #include <testsuite_hooks.h>
34*03a78d15Sespie 
35*03a78d15Sespie typedef char char_type;
36*03a78d15Sespie typedef std::char_traits<char_type> traits_type;
37*03a78d15Sespie class gnu_ctype: public std::ctype<char_type> { };
38*03a78d15Sespie 
39*03a78d15Sespie // These two macros take a ctype mask, a string and a pointer within
40*03a78d15Sespie // the string that the scan function should return, usually either the
41*03a78d15Sespie // first or last character if the string contains identical values as
42*03a78d15Sespie // below.
43*03a78d15Sespie #define VERIFY_SCAN_IS(MASK, STRING, EXPECTED) \
44*03a78d15Sespie   VERIFY(gctype.scan_is((MASK), (STRING), \
45*03a78d15Sespie 			(STRING) + traits_type::length(STRING)) == (EXPECTED))
46*03a78d15Sespie #define VERIFY_SCAN_NOT(MASK, STRING, EXPECTED) \
47*03a78d15Sespie   VERIFY(gctype.scan_not((MASK), (STRING), \
48*03a78d15Sespie 			 (STRING) + traits_type::length(STRING)) == (EXPECTED))
49*03a78d15Sespie 
50*03a78d15Sespie // Sanity check scan_is() and scan_not().
test01()51*03a78d15Sespie void test01()
52*03a78d15Sespie {
53*03a78d15Sespie   bool test = true;
54*03a78d15Sespie 
55*03a78d15Sespie   const char_type *const ca = "aaaaa";
56*03a78d15Sespie   const char_type *const cz = "zzzzz";
57*03a78d15Sespie   const char_type *const cA = "AAAAA";
58*03a78d15Sespie   const char_type *const cZ = "ZZZZZ";
59*03a78d15Sespie   const char_type *const c0 = "00000";
60*03a78d15Sespie   const char_type *const c9 = "99999";
61*03a78d15Sespie   const char_type *const cs = "     ";
62*03a78d15Sespie   const char_type *const xf = "fffff";
63*03a78d15Sespie   const char_type *const xF = "FFFFF";
64*03a78d15Sespie   const char_type *const p1 = "!!!!!";
65*03a78d15Sespie   const char_type *const p2 = "/////";
66*03a78d15Sespie 
67*03a78d15Sespie   gnu_ctype gctype;
68*03a78d15Sespie 
69*03a78d15Sespie   // 'a'
70*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, ca, ca);
71*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, ca, ca);
72*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, ca, ca+5);
73*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, ca, ca+5);
74*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, ca, ca);
75*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, ca, ca);
76*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, ca, ca);
77*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, ca, ca+5);
78*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, ca, ca+5);
79*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, ca, ca+5);
80*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, ca, ca);
81*03a78d15Sespie 
82*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, ca, ca+5);
83*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, ca, ca+5);
84*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, ca, ca);
85*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, ca, ca);
86*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, ca, ca+5);
87*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, ca, ca+5);
88*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, ca, ca+5);
89*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, ca, ca);
90*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, ca, ca);
91*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, ca, ca);
92*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, ca, ca+5);
93*03a78d15Sespie 
94*03a78d15Sespie   // 'z'
95*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, cz, cz);
96*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, cz, cz);
97*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, cz, cz+5);
98*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, cz, cz+5);
99*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, cz, cz);
100*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, cz, cz);
101*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, cz, cz);
102*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, cz, cz+5);
103*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, cz, cz+5);
104*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, cz, cz+5);
105*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, cz, cz+5);
106*03a78d15Sespie 
107*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, cz, cz+5);
108*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, cz, cz+5);
109*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, cz, cz);
110*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, cz, cz);
111*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, cz, cz+5);
112*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, cz, cz+5);
113*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, cz, cz+5);
114*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, cz, cz);
115*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, cz, cz);
116*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, cz, cz);
117*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, cz, cz);
118*03a78d15Sespie 
119*03a78d15Sespie   // 'A'
120*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, cA, cA);
121*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, cA, cA);
122*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, cA, cA+5);
123*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, cA, cA+5);
124*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, cA, cA);
125*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, cA, cA+5);
126*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, cA, cA);
127*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, cA, cA+5);
128*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, cA, cA+5);
129*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, cA, cA);
130*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, cA, cA);
131*03a78d15Sespie 
132*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, cA, cA+5);
133*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, cA, cA+5);
134*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, cA, cA);
135*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, cA, cA);
136*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, cA, cA+5);
137*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, cA, cA);
138*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, cA, cA+5);
139*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, cA, cA);
140*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, cA, cA);
141*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, cA, cA+5);
142*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, cA, cA+5);
143*03a78d15Sespie 
144*03a78d15Sespie   // 'Z'
145*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, cZ, cZ);
146*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, cZ, cZ);
147*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, cZ, cZ+5);
148*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, cZ, cZ+5);
149*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, cZ, cZ);
150*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, cZ, cZ+5);
151*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, cZ, cZ);
152*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, cZ, cZ+5);
153*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, cZ, cZ+5);
154*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, cZ, cZ);
155*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, cZ, cZ+5);
156*03a78d15Sespie 
157*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, cZ, cZ+5);
158*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, cZ, cZ+5);
159*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, cZ, cZ);
160*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, cZ, cZ);
161*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, cZ, cZ+5);
162*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, cZ, cZ);
163*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, cZ, cZ+5);
164*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, cZ, cZ);
165*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, cZ, cZ);
166*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, cZ, cZ+5);
167*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, cZ, cZ);
168*03a78d15Sespie 
169*03a78d15Sespie   // '0'
170*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, c0, c0);
171*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, c0, c0+5);
172*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, c0, c0+5);
173*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, c0, c0);
174*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, c0, c0);
175*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, c0, c0+5);
176*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, c0, c0);
177*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, c0, c0+5);
178*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, c0, c0+5);
179*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, c0, c0+5);
180*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, c0, c0);
181*03a78d15Sespie 
182*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, c0, c0+5);
183*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, c0, c0);
184*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, c0, c0);
185*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, c0, c0+5);
186*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, c0, c0+5);
187*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, c0, c0);
188*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, c0, c0+5);
189*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, c0, c0);
190*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, c0, c0);
191*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, c0, c0);
192*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, c0, c0+5);
193*03a78d15Sespie 
194*03a78d15Sespie   // '9'
195*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, c9, c9);
196*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, c9, c9+5);
197*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, c9, c9+5);
198*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, c9, c9);
199*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, c9, c9);
200*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, c9, c9+5);
201*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, c9, c9);
202*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, c9, c9+5);
203*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, c9, c9+5);
204*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, c9, c9+5);
205*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, c9, c9);
206*03a78d15Sespie 
207*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, c9, c9+5);
208*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, c9, c9);
209*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, c9, c9);
210*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, c9, c9+5);
211*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, c9, c9+5);
212*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, c9, c9);
213*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, c9, c9+5);
214*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, c9, c9);
215*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, c9, c9);
216*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, c9, c9);
217*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, c9, c9+5);
218*03a78d15Sespie 
219*03a78d15Sespie   // ' '
220*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, cs, cs+5);
221*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, cs, cs+5);
222*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, cs, cs+5);
223*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, cs, cs+5);
224*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, cs, cs+5);
225*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, cs, cs+5);
226*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, cs, cs);
227*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, cs, cs+5);
228*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, cs, cs);
229*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, cs, cs+5);
230*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, cs, cs+5);
231*03a78d15Sespie 
232*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, cs, cs);
233*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, cs, cs);
234*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, cs, cs);
235*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, cs, cs);
236*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, cs, cs);
237*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, cs, cs);
238*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, cs, cs+5);
239*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, cs, cs);
240*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, cs, cs+5);
241*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, cs, cs);
242*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, cs, cs);
243*03a78d15Sespie 
244*03a78d15Sespie   // 'f'
245*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, xf, xf);
246*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, xf, xf);
247*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, xf, xf+5);
248*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, xf, xf+5);
249*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, xf, xf);
250*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, xf, xf);
251*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, xf, xf);
252*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, xf, xf+5);
253*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, xf, xf+5);
254*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, xf, xf+5);
255*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, xf, xf);
256*03a78d15Sespie 
257*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, xf, xf+5);
258*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, xf, xf+5);
259*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, xf, xf);
260*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, xf, xf);
261*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, xf, xf+5);
262*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, xf, xf+5);
263*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, xf, xf+5);
264*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, xf, xf);
265*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, xf, xf);
266*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, xf, xf);
267*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, xf, xf+5);
268*03a78d15Sespie 
269*03a78d15Sespie   // 'F'
270*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, xF, xF);
271*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, xF, xF);
272*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, xF, xF+5);
273*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, xF, xF+5);
274*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, xF, xF);
275*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, xF, xF+5);
276*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, xF, xF);
277*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, xF, xF+5);
278*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, xF, xF+5);
279*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, xF, xF);
280*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, xF, xF);
281*03a78d15Sespie 
282*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, xF, xF+5);
283*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, xF, xF+5);
284*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, xF, xF);
285*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, xF, xF);
286*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, xF, xF+5);
287*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, xF, xF);
288*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, xF, xF+5);
289*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, xF, xF);
290*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, xF, xF);
291*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, xF, xF+5);
292*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, xF, xF+5);
293*03a78d15Sespie 
294*03a78d15Sespie   // '!'
295*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, p1, p1+5);
296*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, p1, p1+5);
297*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, p1, p1+5);
298*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, p1, p1+5);
299*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, p1, p1);
300*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, p1, p1+5);
301*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, p1, p1);
302*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, p1, p1);
303*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, p1, p1+5);
304*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, p1, p1+5);
305*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, p1, p1+5);
306*03a78d15Sespie 
307*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, p1, p1);
308*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, p1, p1);
309*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, p1, p1);
310*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, p1, p1);
311*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, p1, p1);
312*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, p1, p1+5);
313*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, p1, p1+5);
314*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, p1, p1);
315*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, p1, p1);
316*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, p1, p1);
317*03a78d15Sespie 
318*03a78d15Sespie   // '/'
319*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alnum, p2, p2+5);
320*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::alpha, p2, p2+5);
321*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::cntrl, p2, p2+5);
322*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::digit, p2, p2+5);
323*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::graph, p2, p2);
324*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::lower, p2, p2+5);
325*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::print, p2, p2);
326*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::punct, p2, p2);
327*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::space, p2, p2+5);
328*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::upper, p2, p2+5);
329*03a78d15Sespie   VERIFY_SCAN_IS (std::ctype_base::xdigit, p2, p2+5);
330*03a78d15Sespie 
331*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alnum, p2, p2);
332*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::alpha, p2, p2);
333*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::cntrl, p2, p2);
334*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::digit, p2, p2);
335*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::graph, p2, p2+5);
336*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::lower, p2, p2);
337*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::print, p2, p2+5);
338*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::punct, p2, p2+5);
339*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::space, p2, p2);
340*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::upper, p2, p2);
341*03a78d15Sespie   VERIFY_SCAN_NOT (std::ctype_base::xdigit, p2, p2);
342*03a78d15Sespie }
343*03a78d15Sespie 
main()344*03a78d15Sespie int main()
345*03a78d15Sespie {
346*03a78d15Sespie   test01();
347*03a78d15Sespie   return 0;
348*03a78d15Sespie }
349