compare.pass.cpp revision 22a74dcf50ff4338767607fa5a9d2916c2c85525
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <locale> 11 12// template <class charT> class collate_byname 13 14// int compare(const charT* low1, const charT* high1, 15// const charT* low2, const charT* high2) const; 16 17// I'm currently unable to confirm that collation based on named locales 18// has any difference from "C" collation. But I do believe I'm picking 19// up the OS's collation files. 20 21#include <locale> 22#include <string> 23#include <cassert> 24 25#include <stdio.h> 26 27int main() 28{ 29 { 30 std::locale l("en_US"); 31 { 32 const std::collate<char>& f = std::use_facet<std::collate<char> >(l); 33 std::string s2("aaaaaaA"); 34 std::string s3("BaaaaaA"); 35 assert(f.compare(s2.data(), s2.data() + s2.size(), 36 s3.data(), s3.data() + s3.size()) == 1); 37 } 38 { 39 const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); 40 std::wstring s2(L"aaaaaaA"); 41 std::wstring s3(L"BaaaaaA"); 42 assert(f.compare(s2.data(), s2.data() + s2.size(), 43 s3.data(), s3.data() + s3.size()) == 1); 44 } 45 } 46 { 47 std::locale l(""); 48 { 49 const std::collate<char>& f = std::use_facet<std::collate<char> >(l); 50 std::string s2("aaaaaaA"); 51 std::string s3("BaaaaaA"); 52 assert(f.compare(s2.data(), s2.data() + s2.size(), 53 s3.data(), s3.data() + s3.size()) == 1); 54 } 55 { 56 const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); 57 std::wstring s2(L"aaaaaaA"); 58 std::wstring s3(L"BaaaaaA"); 59 assert(f.compare(s2.data(), s2.data() + s2.size(), 60 s3.data(), s3.data() + s3.size()) == 1); 61 } 62 } 63 { 64 std::locale l("C"); 65 { 66 const std::collate<char>& f = std::use_facet<std::collate<char> >(l); 67 std::string s2("aaaaaaA"); 68 std::string s3("BaaaaaA"); 69 assert(f.compare(s2.data(), s2.data() + s2.size(), 70 s3.data(), s3.data() + s3.size()) == 1); 71 } 72 { 73 const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); 74 std::wstring s2(L"aaaaaaA"); 75 std::wstring s3(L"BaaaaaA"); 76 assert(f.compare(s2.data(), s2.data() + s2.size(), 77 s3.data(), s3.data() + s3.size()) == 1); 78 } 79 } 80} 81