1// { dg-do run } 2// { dg-xfail-if "" { "*-*-hpux11.23" } { "*" } { "" } } */ 3// { dg-options "-finput-charset=ISO8859-1" } 4// { dg-require-iconv "ISO8859-1" } 5// { dg-require-namedlocale "" } 6 7// 2001-08-15 Benjamin Kosnik <bkoz@redhat.com> 8 9// Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation 10// 11// This file is part of the GNU ISO C++ Library. This library is free 12// software; you can redistribute it and/or modify it under the 13// terms of the GNU General Public License as published by the 14// Free Software Foundation; either version 2, or (at your option) 15// any later version. 16 17// This library is distributed in the hope that it will be useful, 18// but WITHOUT ANY WARRANTY; without even the implied warranty of 19// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20// GNU General Public License for more details. 21 22// You should have received a copy of the GNU General Public License along 23// with this library; see the file COPYING. If not, write to the Free 24// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 25// USA. 26 27// 22.2.4.1.1 collate members 28 29#include <locale> 30#include <testsuite_hooks.h> 31 32void test02() 33{ 34 using namespace std; 35 typedef std::collate<wchar_t>::string_type string_type; 36 37 bool test __attribute__((unused)) = true; 38 39 // basic construction 40 locale loc_c = locale::classic(); 41 locale loc_us = locale("en_US"); 42 locale loc_fr = locale("fr_FR"); 43 locale loc_de = locale("de_DE"); 44 VERIFY( loc_c != loc_de ); 45 VERIFY( loc_us != loc_fr ); 46 VERIFY( loc_us != loc_de ); 47 VERIFY( loc_de != loc_fr ); 48 49 // cache the collate facets 50 const collate<wchar_t>& coll_de = use_facet<collate<wchar_t> >(loc_de); 51 52 // long hash(const charT*, const charT*) cosnt 53 const wchar_t* strlit3 = L"�uglein Augment"; // "C" == "Augment �uglein" 54 const wchar_t* strlit4 = L"Base ba� Ba� Bast"; // "C" == "Base ba� Ba� Bast" 55 56 int i1; 57 int i2; 58 int size3 = char_traits<wchar_t>::length(strlit3) - 1; 59 int size4 = char_traits<wchar_t>::length(strlit4) - 1; 60 61 string_type str3 = coll_de.transform(strlit3, strlit3 + size3); 62 string_type str4 = coll_de.transform(strlit4, strlit4 + size4); 63 i1 = str3.compare(str4); 64 i2 = coll_de.compare(strlit3, strlit3 + size3, strlit4, strlit4 + size4); 65 VERIFY ( i2 == -1 ); 66 VERIFY ( i1 * i2 > 0 ); 67} 68 69int main() 70{ 71 test02(); 72 return 0; 73} 74