compare.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
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