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