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