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 } 127