]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc
*: Change __gnu_cxx_test to __gnu_test.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 22_locale / ctype / is / char / 2.cc
CommitLineData
5f8d36fe
BK
1// { dg-do run { xfail *-*-![linux]* } }
2// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
3//
4// This file is part of the GNU ISO C++ Library. This library is free
5// software; you can redistribute it and/or modify it under the
6// terms of the GNU General Public License as published by the
7// Free Software Foundation; either version 2, or (at your option)
8// any later version.
9
10// This library is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14
15// You should have received a copy of the GNU General Public License along
16// with this library; see the file COPYING. If not, write to the Free
17// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
18// USA.
19
20// As a special exception, you may use this file as part of a free software
21// library without restriction. Specifically, if other files instantiate
22// templates or use macros or inline functions from this file, or you compile
23// this file and link it with other files to produce an executable, this
24// file does not by itself cause the resulting executable to be covered by
25// the GNU General Public License. This exception does not however
26// invalidate any other reasons why the executable file might be covered by
27// the GNU General Public License.
28
29// 22.2.1.3.2 ctype<char> members
30
31#include <locale>
32#include <vector>
33#include <testsuite_hooks.h>
34
35typedef char char_type;
36
37// libstdc++/4456, libstdc++/4457, libstdc++/4458
38void test02()
39{
40 using namespace std;
41 typedef ctype_base::mask mask;
42 typedef vector<mask> vector_type;
43
44 bool test = true;
45
46 // const int max = numeric_limits<char>::max();
47 const int max = 255;
48 const int ctype_mask_max = 10;
49 vector_type v_c(max);
50 vector_type v_de(max);
51
52 // "C"
53 locale loc_c = locale::classic();
54 const ctype<char>& ctype_c = use_facet<ctype<char> >(loc_c);
55 for (int i = 0; i < max; ++i)
56 {
57 char_type c = static_cast<char>(i);
58 mask mask_test = static_cast<mask>(0);
59 mask mask_is = static_cast<mask>(0);
60 for (int j = 0; j <= ctype_mask_max; ++j)
61 {
62 mask_test = static_cast<mask>(1 << j);
63 if (ctype_c.is(mask_test, c))
64 mask_is |= mask_test;
65 }
66 v_c[i] = mask_is;
67 }
68
69 // "de_DE"
aecf642c 70 locale loc_de = __gnu_test::try_named_locale("de_DE");
5f8d36fe
BK
71 const ctype<char>& ctype_de = use_facet<ctype<char> >(loc_de);
72 for (int i = 0; i < max; ++i)
73 {
74 char_type c = static_cast<char>(i);
75 mask mask_test = static_cast<mask>(0);
76 mask mask_is = static_cast<mask>(0);
77 for (int j = 0; j <= ctype_mask_max; ++j)
78 {
79 mask_test = static_cast<mask>(1 << j);
80 if (ctype_de.is(mask_test, c))
81 mask_is |= mask_test;
82 }
83 v_de[i] = mask_is;
84 }
85
86#if QUANNUM_VERBOSE_LYRICALLY_ADEPT_BAY_AREA_MCS_MODE
87 for (int i = 0; i < max; ++i)
88 {
89 char_type mark = v_c[i] == v_de[i] ? ' ' : '-';
90 cout << i << ' ' << mark << ' ' << static_cast<char>(i) << '\t' ;
91 cout << "v_c: " << setw(4) << v_c[i] << '\t';
92 cout << "v_de: " << setw(4) << v_de[i] << endl;
93 }
94 cout << (v_c == v_de) << endl;
95#endif
96
97 VERIFY( v_c != v_de );
98}
99
100int main()
101{
3d838e28 102 test02();
5f8d36fe
BK
103 return 0;
104}