Home | History | Annotate | Download | only in re.traits
      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