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 28// Test handling of strings containing nul characters 29void test03() 30{ 31 using namespace std; 32 typedef std::collate<wchar_t>::string_type string_type; 33 34 bool test __attribute__((unused)) = true; 35 36 // basic construction 37 locale loc_c = locale::classic(); 38 locale loc_de = locale("de_DE"); 39 VERIFY( loc_c != loc_de ); 40 41 // cache the collate facets 42 const collate<wchar_t>& coll_c = use_facet<collate<wchar_t> >(loc_c); 43 const collate<wchar_t>& coll_de = use_facet<collate<wchar_t> >(loc_de); 44 45 // int compare(const charT*, const charT*, const charT*, const charT*) const 46 const wchar_t* strlit1 = L"a\0a\0"; 47 const wchar_t* strlit2 = L"a\0b\0"; 48 const wchar_t* strlit3 = L"a\0\xc4\0"; 49 const wchar_t* strlit4 = L"a\0B\0"; 50 const wchar_t* strlit5 = L"aa\0"; 51 const wchar_t* strlit6 = L"b\0a\0"; 52 53 int i; 54 i = coll_c.compare(strlit1, strlit1 + 3, strlit2, strlit2 + 3); 55 VERIFY( i == -1 ); 56 57 i = coll_de.compare(strlit1, strlit1 + 3, strlit2, strlit2 + 3); 58 VERIFY( i == -1 ); 59 60 i = coll_c.compare(strlit3, strlit3 + 3, strlit4, strlit4 + 3); 61 VERIFY( i == 1 ); 62 63 i = coll_de.compare(strlit3, strlit3 + 3, strlit4, strlit4 + 3); 64 VERIFY( i == -1 ); 65 66 i = coll_c.compare(strlit1, strlit1 + 3, strlit1, strlit1 + 4); 67 VERIFY( i == -1 ); 68 69 i = coll_de.compare(strlit3, strlit3 + 4, strlit3, strlit3 + 3); 70 VERIFY( i == 1 ); 71 72 i = coll_c.compare(strlit1, strlit1 + 4, strlit4, strlit4 + 1); 73 VERIFY( i == 1 ); 74 75 i = coll_de.compare(strlit3, strlit3 + 3, strlit3, strlit3 + 3); 76 VERIFY( i == 0 ); 77 78 i = coll_c.compare(strlit1, strlit1 + 2, strlit1, strlit1 + 4); 79 VERIFY( i == -1 ); 80 81 i = coll_de.compare(strlit1, strlit1 + 3, strlit5, strlit5 + 3); 82 VERIFY( i == -1 ); 83 84 i = coll_c.compare(strlit6, strlit6 + 3, strlit1, strlit1 + 3); 85 VERIFY( i == 1 ); 86} 87 88int main() 89{ 90 test03(); 91 return 0; 92} 93