1// { dg-require-namedlocale "" } 2 3// 2001-08-15 Benjamin Kosnik <bkoz@redhat.com> 4 5// Copyright (C) 2001, 2002, 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// Check "C" locale. 29void test01() 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_us = locale("en_US"); 39 locale loc_fr = locale("fr_FR"); 40 locale loc_de = locale("de_DE"); 41 VERIFY( loc_c != loc_de ); 42 VERIFY( loc_us != loc_fr ); 43 VERIFY( loc_us != loc_de ); 44 VERIFY( loc_de != loc_fr ); 45 46 // cache the collate facets 47 const collate<wchar_t>& coll_c = use_facet<collate<wchar_t> >(loc_c); 48 49 // int compare(const charT*, const charT*, const charT*, const charT*) const 50 51 const wchar_t* strlit1 = L"monkey picked tikuanyin oolong"; 52 const wchar_t* strlit2 = L"imperial tea court green oolong"; 53 54 int i1; 55 int i2; 56 int size1 = char_traits<wchar_t>::length(strlit1) - 1; 57 int size2 = char_traits<wchar_t>::length(strlit2) - 1; 58 59 i1 = coll_c.compare(strlit1, strlit1 + size1, strlit1, strlit1 + 7); 60 VERIFY ( i1 == 1 ); 61 i1 = coll_c.compare(strlit1, strlit1 + 7, strlit1, strlit1 + size1); 62 VERIFY ( i1 == -1 ); 63 i1 = coll_c.compare(strlit1, strlit1 + 7, strlit1, strlit1 + 7); 64 VERIFY ( i1 == 0 ); 65 66 i2 = coll_c.compare(strlit2, strlit2 + size2, strlit2, strlit2 + 13); 67 VERIFY ( i2 == 1 ); 68 i2 = coll_c.compare(strlit2, strlit2 + 13, strlit2, strlit2 + size2); 69 VERIFY ( i2 == -1 ); 70 i2 = coll_c.compare(strlit2, strlit2 + size2, strlit2, strlit2 + size2); 71 VERIFY ( i2 == 0 ); 72} 73 74int main() 75{ 76 test01(); 77 return 0; 78} 79