1// { dg-require-namedlocale "" } 2 3// 2001-08-15 Benjamin Kosnik <bkoz@redhat.com> 4 5// Copyright (C) 2001, 2002, 2003, 2005, 2009 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 3, 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 COPYING3. If not see 20// <http://www.gnu.org/licenses/>. 21 22// 22.2.4.1.1 collate members 23 24#include <locale> 25#include <testsuite_hooks.h> 26 27// Check "C" locale. 28void test01() 29{ 30 using namespace std; 31 typedef std::collate<wchar_t>::string_type string_type; 32 33 bool test __attribute__((unused)) = true; 34 35 // basic construction 36 locale loc_c = locale::classic(); 37 locale loc_us = locale("en_US"); 38 locale loc_fr = locale("fr_FR"); 39 locale loc_de = locale("de_DE"); 40 VERIFY( loc_c != loc_de ); 41 VERIFY( loc_us != loc_fr ); 42 VERIFY( loc_us != loc_de ); 43 VERIFY( loc_de != loc_fr ); 44 45 // cache the collate facets 46 const collate<wchar_t>& coll_c = use_facet<collate<wchar_t> >(loc_c); 47 48 // int compare(const charT*, const charT*, const charT*, const charT*) const 49 50 const wchar_t* strlit1 = L"monkey picked tikuanyin oolong"; 51 const wchar_t* strlit2 = L"imperial tea court green oolong"; 52 53 int i1; 54 int i2; 55 int size1 = char_traits<wchar_t>::length(strlit1) - 1; 56 int size2 = char_traits<wchar_t>::length(strlit2) - 1; 57 58 i1 = coll_c.compare(strlit1, strlit1 + size1, strlit1, strlit1 + 7); 59 VERIFY ( i1 == 1 ); 60 i1 = coll_c.compare(strlit1, strlit1 + 7, strlit1, strlit1 + size1); 61 VERIFY ( i1 == -1 ); 62 i1 = coll_c.compare(strlit1, strlit1 + 7, strlit1, strlit1 + 7); 63 VERIFY ( i1 == 0 ); 64 65 i2 = coll_c.compare(strlit2, strlit2 + size2, strlit2, strlit2 + 13); 66 VERIFY ( i2 == 1 ); 67 i2 = coll_c.compare(strlit2, strlit2 + 13, strlit2, strlit2 + size2); 68 VERIFY ( i2 == -1 ); 69 i2 = coll_c.compare(strlit2, strlit2 + size2, strlit2, strlit2 + size2); 70 VERIFY ( i2 == 0 ); 71} 72 73int main() 74{ 75 test01(); 76 return 0; 77} 78