brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · d4b7b0a Raw
130 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <regex>10 11// template <class charT> struct regex_traits;12 13// int value(charT ch, int radix) const;14 15#include <regex>16#include <cassert>17#include "test_macros.h"18 19int main(int, char**)20{21    {22        std::regex_traits<char> t;23 24        for (char c = 0; c < '0'; ++c)25        {26            assert(t.value(c, 8) == -1);27            assert(t.value(c, 10) == -1);28            assert(t.value(c, 16) == -1);29        }30        for (char c = '0'; c < '8'; ++c)31        {32            assert(t.value(c, 8) == c - '0');33            assert(t.value(c, 10) == c - '0');34            assert(t.value(c, 16) == c - '0');35        }36        for (char c = '8'; c < ':'; ++c)37        {38            assert(t.value(c, 8) == -1);39            assert(t.value(c, 10) == c - '0');40            assert(t.value(c, 16) == c - '0');41        }42        for (char c = ':'; c < 'A'; ++c)43        {44            assert(t.value(c, 8) == -1);45            assert(t.value(c, 10) == -1);46            assert(t.value(c, 16) == -1);47        }48        for (char c = 'A'; c < 'G'; ++c)49        {50            assert(t.value(c, 8) == -1);51            assert(t.value(c, 10) == -1);52            assert(t.value(c, 16) == c - 'A' +10);53        }54        for (char c = 'G'; c < 'a'; ++c)55        {56            assert(t.value(c, 8) == -1);57            assert(t.value(c, 10) == -1);58            assert(t.value(c, 16) == -1);59        }60        for (char c = 'a'; c < 'g'; ++c)61        {62            assert(t.value(c, 8) == -1);63            assert(t.value(c, 10) == -1);64            assert(t.value(c, 16) == c - 'a' +10);65        }66        for (int c = 'g'; c < 256; ++c)67        {68            assert(t.value(char(c), 8) == -1);69            assert(t.value(char(c), 10) == -1);70            assert(t.value(char(c), 16) == -1);71        }72    }73#ifndef TEST_HAS_NO_WIDE_CHARACTERS74    {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#endif127 128  return 0;129}130