]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/std/re/re.traits/value.pass.cpp
Vendor import of libc++ trunk r290819:
[FreeBSD/FreeBSD.git] / test / std / re / re.traits / value.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 // <regex>
11
12 // template <class charT> struct regex_traits;
13
14 // int value(charT ch, int radix) const;
15
16 #include <regex>
17 #include <cassert>
18 #include "test_macros.h"
19
20 int main()
21 {
22     {
23         std::regex_traits<char> t;
24
25         for (char c = 0; c < '0'; ++c)
26         {
27             assert(t.value(c, 8) == -1);
28             assert(t.value(c, 10) == -1);
29             assert(t.value(c, 16) == -1);
30         }
31         for (char c = '0'; c < '8'; ++c)
32         {
33             assert(t.value(c, 8) == c - '0');
34             assert(t.value(c, 10) == c - '0');
35             assert(t.value(c, 16) == c - '0');
36         }
37         for (char c = '8'; c < ':'; ++c)
38         {
39             assert(t.value(c, 8) == -1);
40             assert(t.value(c, 10) == c - '0');
41             assert(t.value(c, 16) == c - '0');
42         }
43         for (char c = ':'; c < 'A'; ++c)
44         {
45             assert(t.value(c, 8) == -1);
46             assert(t.value(c, 10) == -1);
47             assert(t.value(c, 16) == -1);
48         }
49         for (char c = 'A'; c < 'G'; ++c)
50         {
51             assert(t.value(c, 8) == -1);
52             assert(t.value(c, 10) == -1);
53             assert(t.value(c, 16) == c - 'A' +10);
54         }
55         for (char c = 'G'; c < 'a'; ++c)
56         {
57             assert(t.value(c, 8) == -1);
58             assert(t.value(c, 10) == -1);
59             assert(t.value(c, 16) == -1);
60         }
61         for (char c = 'a'; c < 'g'; ++c)
62         {
63             assert(t.value(c, 8) == -1);
64             assert(t.value(c, 10) == -1);
65             assert(t.value(c, 16) == c - 'a' +10);
66         }
67         for (int c = 'g'; c < 256; ++c)
68         {
69             assert(t.value(char(c), 8) == -1);
70             assert(t.value(char(c), 10) == -1);
71             assert(t.value(char(c), 16) == -1);
72         }
73     }
74     {
75         std::regex_traits<wchar_t> t;
76
77         for (wchar_t c = 0; c < '0'; ++c)
78         {
79             assert(t.value(c, 8) == -1);
80             assert(t.value(c, 10) == -1);
81             assert(t.value(c, 16) == -1);
82         }
83         for (wchar_t c = '0'; c < '8'; ++c)
84         {
85             assert(t.value(c, 8) ==  static_cast<int>(c - '0'));
86             assert(t.value(c, 10) == static_cast<int>(c - '0'));
87             assert(t.value(c, 16) == static_cast<int>(c - '0'));
88         }
89         for (wchar_t c = '8'; c < ':'; ++c)
90         {
91             assert(t.value(c, 8) == -1);
92             assert(t.value(c, 10) == static_cast<int>(c - '0'));
93             assert(t.value(c, 16) == static_cast<int>(c - '0'));
94         }
95         for (wchar_t c = ':'; c < 'A'; ++c)
96         {
97             assert(t.value(c, 8) == -1);
98             assert(t.value(c, 10) == -1);
99             assert(t.value(c, 16) == -1);
100         }
101         for (wchar_t c = 'A'; c < 'G'; ++c)
102         {
103             assert(t.value(c, 8) == -1);
104             assert(t.value(c, 10) == -1);
105             assert(t.value(c, 16) == static_cast<int>(c - 'A' +10));
106         }
107         for (wchar_t c = 'G'; c < 'a'; ++c)
108         {
109             assert(t.value(c, 8) == -1);
110             assert(t.value(c, 10) == -1);
111             assert(t.value(c, 16) == -1);
112         }
113         for (wchar_t c = 'a'; c < 'g'; ++c)
114         {
115             assert(t.value(c, 8) == -1);
116             assert(t.value(c, 10) == -1);
117             assert(t.value(c, 16) == static_cast<int>(c - 'a' +10));
118         }
119         for (wchar_t c = 'g'; c < 0xFFFF; ++c)
120         {
121             assert(t.value(c, 8) == -1);
122             assert(t.value(c, 10) == -1);
123             assert(t.value(c, 16) == -1);
124         }
125     }
126 }