xref: /aosp_15_r20/external/libcxx/test/std/re/re.traits/value.pass.cpp (revision 58b9f456b02922dfdb1fad8a988d5fd8765ecb80)
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