]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/std/localization/locale.categories/category.collate/locale.collate.byname/transform.pass.cpp
Vendor import of libc++ trunk r351319 (just before the release_80
[FreeBSD/FreeBSD.git] / test / std / localization / locale.categories / category.collate / locale.collate.byname / transform.pass.cpp
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 // NetBSD does not support LC_COLLATE at the moment
11 // XFAIL: netbsd
12
13 // <locale>
14
15 // template <class charT> class collate_byname
16
17 // string_type transform(const charT* low, const charT* high) const;
18
19 // REQUIRES: locale.en_US.UTF-8
20
21 #include <locale>
22 #include <string>
23 #include <cassert>
24
25 #include <stdio.h>
26
27 #include "platform_support.h" // locale name macros
28
29 int main()
30 {
31     {
32         std::locale l(LOCALE_en_US_UTF_8);
33         {
34             std::string x("1234");
35             const std::collate<char>& f = std::use_facet<std::collate<char> >(l);
36             assert(f.transform(x.data(), x.data() + x.size()) != x);
37         }
38         {
39             std::wstring x(L"1234");
40             const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
41             assert(f.transform(x.data(), x.data() + x.size()) != x);
42         }
43     }
44     {
45         std::locale l("C");
46         {
47             std::string x("1234");
48             const std::collate<char>& f = std::use_facet<std::collate<char> >(l);
49             assert(f.transform(x.data(), x.data() + x.size()) == x);
50         }
51         {
52             std::wstring x(L"1234");
53             const std::collate<wchar_t>& f = std::use_facet<std::collate<wchar_t> >(l);
54             assert(f.transform(x.data(), x.data() + x.size()) == x);
55         }
56     }
57 }