]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/22_locale/collate_byname/1.cc
dwarf2out.c (fde_table_in_use): Mark GTY.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 22_locale / collate_byname / 1.cc
1 // 2001-08-15 Benjamin Kosnik <bkoz@redhat.com>
2
3 // Copyright (C) 2001, 2002 Free Software Foundation
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 2, or (at your option)
9 // any later version.
10
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING. If not, write to the Free
18 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19 // USA.
20
21 // 22.2.4.2 Template class collate_byname
22
23 #include <locale>
24 #include <testsuite_hooks.h>
25
26 void test01()
27 {
28 using namespace std;
29 typedef std::collate<char>::string_type string_type;
30
31 bool test = true;
32 string str;
33 locale loc_c = locale::classic();
34
35 locale loc_byname(locale::classic(), new collate_byname<char>("de_DE"));
36 str = loc_byname.name();
37
38 locale loc_de("de_DE");
39 str = loc_de.name();
40
41 VERIFY( loc_de != loc_byname );
42
43 // cache the collate facets
44 const collate<char>& coll_byname = use_facet<collate<char> >(loc_byname);
45 const collate<char>& coll_de = use_facet<collate<char> >(loc_de);
46
47 // Check German "de_DE" locale.
48 int i1;
49 int i2;
50 long l1;
51 long l2;
52 const char* strlit3 = "Äuglein Augment"; // "C" == "Augment Äuglein"
53 const char* strlit4 = "Base baß Baß Bast"; // "C" == "Base baß Baß Bast"
54
55 int size3 = strlen(strlit3) - 1;
56 i1 = coll_de.compare(strlit3, strlit3 + size3, strlit3, strlit3 + 7);
57 VERIFY ( i1 == 1 );
58 i1 = coll_de.compare(strlit3, strlit3 + 7, strlit3, strlit3 + size3);
59 VERIFY ( i1 == -1 );
60 i1 = coll_de.compare(strlit3, strlit3 + 7, strlit3, strlit3 + 7);
61 VERIFY ( i1 == 0 );
62
63 i1 = coll_de.compare(strlit3, strlit3 + 6, strlit3 + 8, strlit3 + 14);
64 VERIFY ( i1 == -1 );
65
66 int size4 = strlen(strlit4) - 1;
67 i2 = coll_de.compare(strlit4, strlit4 + size4, strlit4, strlit4 + 13);
68 VERIFY ( i2 == 1 );
69 i2 = coll_de.compare(strlit4, strlit4 + 13, strlit4, strlit4 + size4);
70 VERIFY ( i2 == -1 );
71 i2 = coll_de.compare(strlit4, strlit4 + size4, strlit4, strlit4 + size4);
72 VERIFY ( i2 == 0 );
73
74 l1 = coll_de.hash(strlit3, strlit3 + size3);
75 l2 = coll_de.hash(strlit3, strlit3 + size3 - 1);
76 VERIFY ( l1 != l2 );
77 l1 = coll_de.hash(strlit3, strlit3 + size3);
78 l2 = coll_de.hash(strlit4, strlit4 + size4);
79 VERIFY ( l1 != l2 );
80
81 string str3 = coll_de.transform(strlit3, strlit3 + size3);
82 string str4 = coll_de.transform(strlit4, strlit4 + size4);
83 i1 = str3.compare(str4);
84 i2 = coll_de.compare(strlit3, strlit3 + size3, strlit4, strlit4 + size4);
85 VERIFY ( i2 == -1 );
86 VERIFY ( i1 * i2 > 0 );
87
88
89 // Check byname locale
90 int i3;
91 int i4;
92 long l3;
93 long l4;
94 size4 = strlen(strlit3) - 1;
95 i3 = coll_de.compare(strlit3, strlit3 + size4, strlit3, strlit3 + 7);
96 VERIFY ( i3 == 1 );
97 i3 = coll_de.compare(strlit3, strlit3 + 7, strlit3, strlit3 + size4);
98 VERIFY ( i3 == -1 );
99 i3 = coll_de.compare(strlit3, strlit3 + 7, strlit3, strlit3 + 7);
100 VERIFY ( i3 == 0 );
101
102 i3 = coll_de.compare(strlit3, strlit3 + 6, strlit3 + 8, strlit3 + 14);
103 VERIFY ( i3 == -1 );
104
105 size4 = strlen(strlit4) - 1;
106 i4 = coll_de.compare(strlit4, strlit4 + size4, strlit4, strlit4 + 13);
107 VERIFY ( i4 == 1 );
108 i4 = coll_de.compare(strlit4, strlit4 + 13, strlit4, strlit4 + size4);
109 VERIFY ( i4 == -1 );
110 i4 = coll_de.compare(strlit4, strlit4 + size4, strlit4, strlit4 + size4);
111 VERIFY ( i4 == 0 );
112
113 l3 = coll_de.hash(strlit3, strlit3 + size4);
114 l4 = coll_de.hash(strlit3, strlit3 + size4 - 1);
115 VERIFY ( l3 != l4 );
116 l3 = coll_de.hash(strlit3, strlit3 + size4);
117 l4 = coll_de.hash(strlit4, strlit4 + size4);
118 VERIFY ( l3 != l4 );
119
120 string str5 = coll_de.transform(strlit3, strlit3 + size3);
121 string str6 = coll_de.transform(strlit4, strlit4 + size4);
122 i3 = str5.compare(str6);
123 i4 = coll_de.compare(strlit3, strlit3 + size4, strlit4, strlit4 + size4);
124 VERIFY ( i4 == -1 );
125 VERIFY ( i3 * i4 > 0 );
126
127 // Verify byname == de
128 VERIFY ( str5 == str3 );
129 VERIFY ( str6 == str4 );
130 }
131
132 int main()
133 {
134 test01();
135 return 0;
136 }