transform.pass.cpp revision 86698890db516536b963cf978369c9aa6a2c836f
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is dual licensed under the MIT and the University of Illinois Open 6// Source Licenses. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <locale> 11 12// template <class charT> class collate_byname 13 14// string_type transform(const charT* low, const charT* high) const; 15 16#include <locale> 17#include <string> 18#include <cassert> 19 20#include <stdio.h> 21 22int main() 23{ 24 // Ensure that the default locale is not C. If it is, the second tests will fail. 25 setenv("LANG", "en_US.UTF-8", 1); 26 { 27 std::locale l("en_US.UTF-8"); 28 { 29 std::string x("1234"); 30 const std::collate<char>& f = std::use_facet<std::collate<char> >(l); 31 assert(f.transform(x.data(), x.data() + x.size()) != x); 32 } 33 { 34 std::wstring x(L"1234"); 35 const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); 36 assert(f.transform(x.data(), x.data() + x.size()) != x); 37 } 38 } 39 { 40 std::locale l(""); 41 { 42 std::string x("1234"); 43 const std::collate<char>& f = std::use_facet<std::collate<char> >(l); 44 assert(f.transform(x.data(), x.data() + x.size()) != x); 45 } 46 { 47 std::wstring x(L"1234"); 48 const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); 49 assert(f.transform(x.data(), x.data() + x.size()) != x); 50 } 51 } 52 { 53 std::locale l("C"); 54 { 55 std::string x("1234"); 56 const std::collate<char>& f = std::use_facet<std::collate<char> >(l); 57 assert(f.transform(x.data(), x.data() + x.size()) == x); 58 } 59 { 60 std::wstring x(L"1234"); 61 const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l); 62 assert(f.transform(x.data(), x.data() + x.size()) == x); 63 } 64 } 65} 66