negative_sign.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
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// class moneypunct<charT, International>
13
14// string_type negative_sign() const;
15
16// The C++ and C standards are silent.
17//   On this one, commen sense is the guideline.
18//   If customers complain, I'll endeavor to minimize customer complaints
19
20#include <locale>
21#include <limits>
22#include <cassert>
23
24typedef std::moneypunct<char> F;
25
26class Fnf
27    : public std::moneypunct<char, false>
28{
29public:
30    explicit Fnf(std::size_t refs = 0)
31        : std::moneypunct<char, false>(refs) {}
32};
33
34class Fnt
35    : public std::moneypunct<char, true>
36{
37public:
38    explicit Fnt(std::size_t refs = 0)
39        : std::moneypunct<char, true>(refs) {}
40};
41
42class Fwf
43    : public std::moneypunct<wchar_t, false>
44{
45public:
46    explicit Fwf(std::size_t refs = 0)
47        : std::moneypunct<wchar_t, false>(refs) {}
48};
49
50class Fwt
51    : public std::moneypunct<wchar_t, true>
52{
53public:
54    explicit Fwt(std::size_t refs = 0)
55        : std::moneypunct<wchar_t, true>(refs) {}
56};
57
58int main()
59{
60    {
61        Fnf f(1);
62        assert(f.negative_sign() == "-");
63    }
64    {
65        Fnt f(1);
66        assert(f.negative_sign() == "-");
67    }
68    {
69        Fwf f(1);
70        assert(f.negative_sign() == L"-");
71    }
72    {
73        Fwt f(1);
74        assert(f.negative_sign() == L"-");
75    }
76}
77