1 // Copyright (C) 2003 Free Software Foundation, Inc.
3 // This file is part of the GNU ISO C++ Library. This library is free
4 // software; you can redistribute it and/or modify it under the
5 // terms of the GNU General Public License as published by the
6 // Free Software Foundation; either version 2, or (at your option)
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License along
15 // with this library; see the file COPYING. If not, write to the Free
16 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19 // As a special exception, you may use this file as part of a free software
20 // library without restriction. Specifically, if other files instantiate
21 // templates or use macros or inline functions from this file, or you compile
22 // this file and link it with other files to produce an executable, this
23 // file does not by itself cause the resulting executable to be covered by
24 // the GNU General Public License. This exception does not however
25 // invalidate any other reasons why the executable file might be covered by
26 // the GNU General Public License.
31 #include <testsuite_hooks.h>
37 bool test
__attribute__((unused
)) = true;
40 L
"Is this the real life?\n"
41 L
"Is this just fantasy?\n"
42 L
"Caught in a landslide\n"
43 L
"No escape from reality\n"
45 L
"Look up to the skies and see\n"
46 L
"I'm just a poor boy\n"
47 L
"I need no sympathy\n"
48 L
"Because I'm easy come, easy go\n"
49 L
"Little high, little low"
50 L
"Anyway the wind blows\n"
51 L
"Doesn't really matter to me\n"
55 const size_t len
= sizeof(str
) / sizeof(str
[0]) - 1;
57 const ctype_base::mask masks
[] = {
58 ctype_base::space
, ctype_base::print
, ctype_base::cntrl
,
59 ctype_base::upper
, ctype_base::lower
, ctype_base::alpha
,
60 ctype_base::digit
, ctype_base::punct
, ctype_base::xdigit
,
61 ctype_base::alnum
, ctype_base::graph
64 const size_t num_masks
= sizeof(masks
) / sizeof(masks
[0]);
67 const ctype
<wchar_t>& ct
= use_facet
<ctype
<wchar_t> >(loc
);
69 for (size_t i
= 0; i
< len
; ++i
)
71 for (size_t j
= 0; j
< num_masks
; ++j
)
73 for (size_t k
= 0; k
< num_masks
; ++k
)
75 bool r1
= ct
.is(masks
[j
] | masks
[k
], str
[i
]);
76 bool r2
= ct
.is(masks
[j
], str
[i
]);
77 bool r3
= ct
.is(masks
[k
], str
[i
]);
79 VERIFY( r1
== (r2
|| r3
) );