1// { dg-require-namedlocale "" } 2 3// 2003-02-24 Petur Runolfsson <peturr02@ru.is> 4 5// Copyright (C) 2003, 2005 Free Software Foundation 6// 7// This file is part of the GNU ISO C++ Library. This library is free 8// software; you can redistribute it and/or modify it under the 9// terms of the GNU General Public License as published by the 10// Free Software Foundation; either version 2, or (at your option) 11// any later version. 12 13// This library is distributed in the hope that it will be useful, 14// but WITHOUT ANY WARRANTY; without even the implied warranty of 15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16// GNU General Public License for more details. 17 18// You should have received a copy of the GNU General Public License along 19// with this library; see the file COPYING. If not, write to the Free 20// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 21// USA. 22 23// 22.2.4.1.1 collate members 24 25#include <locale> 26#include <testsuite_hooks.h> 27 28void test03() 29{ 30 using namespace std; 31 typedef std::collate<char>::string_type string_type; 32 33 bool test __attribute__((unused)) = true; 34 35 // basic construction 36 locale loc_c = locale::classic(); 37 locale loc_de = locale("de_DE"); 38 VERIFY( loc_c != loc_de ); 39 40 // cache the collate facets 41 const collate<char>& coll_c = use_facet<collate<char> >(loc_c); 42 const collate<char>& coll_de = use_facet<collate<char> >(loc_de); 43 44 const char* strlit1 = "a\0a\0"; 45 const char* strlit2 = "a\0b\0"; 46 const char* strlit3 = "a\0\xc4\0"; 47 const char* strlit4 = "a\0B\0"; 48 const char* strlit5 = "aa\0"; 49 const char* strlit6 = "b\0a\0"; 50 51 int i; 52 string_type str1; 53 string_type str2; 54 55 str1 = coll_c.transform(strlit1, strlit1 + 3); 56 str2 = coll_c.transform(strlit2, strlit2 + 3); 57 i = str1.compare(str2); 58 VERIFY( i < 0 ); 59 60 str1 = coll_de.transform(strlit1, strlit1 + 3); 61 str2 = coll_de.transform(strlit2, strlit2 + 3); 62 i = str1.compare(str2); 63 VERIFY( i < 0 ); 64 65 str1 = coll_c.transform(strlit3, strlit3 + 3); 66 str2 = coll_c.transform(strlit4, strlit4 + 3); 67 i = str1.compare(str2); 68 VERIFY( i > 0 ); 69 70 str1 = coll_de.transform(strlit3, strlit3 + 3); 71 str2 = coll_de.transform(strlit4, strlit4 + 3); 72 i = str1.compare(str2); 73 VERIFY( i < 0 ); 74 75 str1 = coll_c.transform(strlit1, strlit1 + 1); 76 str2 = coll_c.transform(strlit5, strlit5 + 1); 77 i = str1.compare(str2); 78 VERIFY( i == 0 ); 79 80 str1 = coll_de.transform(strlit6, strlit6 + 3); 81 str2 = coll_de.transform(strlit1, strlit1 + 3); 82 i = str1.compare(str2); 83 VERIFY( i > 0 ); 84 85 str1 = coll_c.transform(strlit1, strlit1 + 3); 86 str2 = coll_c.transform(strlit5, strlit5 + 3); 87 i = str1.compare(str2); 88 VERIFY( i < 0 ); 89} 90 91int main() 92{ 93 test03(); 94 return 0; 95} 96