1*58b9f456SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
2*58b9f456SAndroid Build Coastguard Worker //
3*58b9f456SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure
4*58b9f456SAndroid Build Coastguard Worker //
5*58b9f456SAndroid Build Coastguard Worker // This file is dual licensed under the MIT and the University of Illinois Open
6*58b9f456SAndroid Build Coastguard Worker // Source Licenses. See LICENSE.TXT for details.
7*58b9f456SAndroid Build Coastguard Worker //
8*58b9f456SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*58b9f456SAndroid Build Coastguard Worker
10*58b9f456SAndroid Build Coastguard Worker // <regex>
11*58b9f456SAndroid Build Coastguard Worker
12*58b9f456SAndroid Build Coastguard Worker // template <class charT> struct regex_traits;
13*58b9f456SAndroid Build Coastguard Worker
14*58b9f456SAndroid Build Coastguard Worker // int value(charT ch, int radix) const;
15*58b9f456SAndroid Build Coastguard Worker
16*58b9f456SAndroid Build Coastguard Worker #include <regex>
17*58b9f456SAndroid Build Coastguard Worker #include <cassert>
18*58b9f456SAndroid Build Coastguard Worker #include "test_macros.h"
19*58b9f456SAndroid Build Coastguard Worker
main()20*58b9f456SAndroid Build Coastguard Worker int main()
21*58b9f456SAndroid Build Coastguard Worker {
22*58b9f456SAndroid Build Coastguard Worker {
23*58b9f456SAndroid Build Coastguard Worker std::regex_traits<char> t;
24*58b9f456SAndroid Build Coastguard Worker
25*58b9f456SAndroid Build Coastguard Worker for (char c = 0; c < '0'; ++c)
26*58b9f456SAndroid Build Coastguard Worker {
27*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
28*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
29*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == -1);
30*58b9f456SAndroid Build Coastguard Worker }
31*58b9f456SAndroid Build Coastguard Worker for (char c = '0'; c < '8'; ++c)
32*58b9f456SAndroid Build Coastguard Worker {
33*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == c - '0');
34*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == c - '0');
35*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == c - '0');
36*58b9f456SAndroid Build Coastguard Worker }
37*58b9f456SAndroid Build Coastguard Worker for (char c = '8'; c < ':'; ++c)
38*58b9f456SAndroid Build Coastguard Worker {
39*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
40*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == c - '0');
41*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == c - '0');
42*58b9f456SAndroid Build Coastguard Worker }
43*58b9f456SAndroid Build Coastguard Worker for (char c = ':'; c < 'A'; ++c)
44*58b9f456SAndroid Build Coastguard Worker {
45*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
46*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
47*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == -1);
48*58b9f456SAndroid Build Coastguard Worker }
49*58b9f456SAndroid Build Coastguard Worker for (char c = 'A'; c < 'G'; ++c)
50*58b9f456SAndroid Build Coastguard Worker {
51*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
52*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
53*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == c - 'A' +10);
54*58b9f456SAndroid Build Coastguard Worker }
55*58b9f456SAndroid Build Coastguard Worker for (char c = 'G'; c < 'a'; ++c)
56*58b9f456SAndroid Build Coastguard Worker {
57*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
58*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
59*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == -1);
60*58b9f456SAndroid Build Coastguard Worker }
61*58b9f456SAndroid Build Coastguard Worker for (char c = 'a'; c < 'g'; ++c)
62*58b9f456SAndroid Build Coastguard Worker {
63*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
64*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
65*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == c - 'a' +10);
66*58b9f456SAndroid Build Coastguard Worker }
67*58b9f456SAndroid Build Coastguard Worker for (int c = 'g'; c < 256; ++c)
68*58b9f456SAndroid Build Coastguard Worker {
69*58b9f456SAndroid Build Coastguard Worker assert(t.value(char(c), 8) == -1);
70*58b9f456SAndroid Build Coastguard Worker assert(t.value(char(c), 10) == -1);
71*58b9f456SAndroid Build Coastguard Worker assert(t.value(char(c), 16) == -1);
72*58b9f456SAndroid Build Coastguard Worker }
73*58b9f456SAndroid Build Coastguard Worker }
74*58b9f456SAndroid Build Coastguard Worker {
75*58b9f456SAndroid Build Coastguard Worker std::regex_traits<wchar_t> t;
76*58b9f456SAndroid Build Coastguard Worker
77*58b9f456SAndroid Build Coastguard Worker for (wchar_t c = 0; c < '0'; ++c)
78*58b9f456SAndroid Build Coastguard Worker {
79*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
80*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
81*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == -1);
82*58b9f456SAndroid Build Coastguard Worker }
83*58b9f456SAndroid Build Coastguard Worker for (wchar_t c = '0'; c < '8'; ++c)
84*58b9f456SAndroid Build Coastguard Worker {
85*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == static_cast<int>(c - '0'));
86*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == static_cast<int>(c - '0'));
87*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == static_cast<int>(c - '0'));
88*58b9f456SAndroid Build Coastguard Worker }
89*58b9f456SAndroid Build Coastguard Worker for (wchar_t c = '8'; c < ':'; ++c)
90*58b9f456SAndroid Build Coastguard Worker {
91*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
92*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == static_cast<int>(c - '0'));
93*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == static_cast<int>(c - '0'));
94*58b9f456SAndroid Build Coastguard Worker }
95*58b9f456SAndroid Build Coastguard Worker for (wchar_t c = ':'; c < 'A'; ++c)
96*58b9f456SAndroid Build Coastguard Worker {
97*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
98*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
99*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == -1);
100*58b9f456SAndroid Build Coastguard Worker }
101*58b9f456SAndroid Build Coastguard Worker for (wchar_t c = 'A'; c < 'G'; ++c)
102*58b9f456SAndroid Build Coastguard Worker {
103*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
104*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
105*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == static_cast<int>(c - 'A' +10));
106*58b9f456SAndroid Build Coastguard Worker }
107*58b9f456SAndroid Build Coastguard Worker for (wchar_t c = 'G'; c < 'a'; ++c)
108*58b9f456SAndroid Build Coastguard Worker {
109*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
110*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
111*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == -1);
112*58b9f456SAndroid Build Coastguard Worker }
113*58b9f456SAndroid Build Coastguard Worker for (wchar_t c = 'a'; c < 'g'; ++c)
114*58b9f456SAndroid Build Coastguard Worker {
115*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
116*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
117*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == static_cast<int>(c - 'a' +10));
118*58b9f456SAndroid Build Coastguard Worker }
119*58b9f456SAndroid Build Coastguard Worker for (wchar_t c = 'g'; c < 0xFFFF; ++c)
120*58b9f456SAndroid Build Coastguard Worker {
121*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 8) == -1);
122*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 10) == -1);
123*58b9f456SAndroid Build Coastguard Worker assert(t.value(c, 16) == -1);
124*58b9f456SAndroid Build Coastguard Worker }
125*58b9f456SAndroid Build Coastguard Worker }
126*58b9f456SAndroid Build Coastguard Worker }
127