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 // bool isctype(charT c, char_class_type f) const;
     15 
     16 #include <regex>
     17 #include <cassert>
     18 
     19 int main()
     20 {
     21     {
     22         std::regex_traits<char> t;
     23 
     24         std::string s("w");
     25         assert( t.isctype('_', t.lookup_classname(s.begin(), s.end())));
     26         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
     27         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
     28         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
     29         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
     30         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
     31         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
     32 
     33         s = "alnum";
     34         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
     35         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
     36         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
     37         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
     38         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
     39         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
     40         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
     41 
     42         s = "alpha";
     43         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
     44         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
     45         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
     46         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
     47         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
     48         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
     49         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
     50 
     51         s = "blank";
     52         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
     53         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
     54         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
     55         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
     56         assert( t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
     57         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
     58         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
     59 
     60         s = "cntrl";
     61         assert( t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
     62         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
     63         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
     64         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
     65         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
     66         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
     67         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
     68         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
     69 
     70         s = "digit";
     71         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
     72         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
     73         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
     74         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
     75         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
     76         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
     77         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
     78         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
     79 
     80         s = "graph";
     81         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
     82         assert( t.isctype('_', t.lookup_classname(s.begin(), s.end())));
     83         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
     84         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
     85         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
     86         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
     87         assert( t.isctype('-', t.lookup_classname(s.begin(), s.end())));
     88         assert( t.isctype('@', t.lookup_classname(s.begin(), s.end())));
     89 
     90         s = "lower";
     91         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
     92         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
     93         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
     94         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
     95         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
     96         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
     97         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
     98         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
     99 
    100         s = "print";
    101         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
    102         assert( t.isctype('_', t.lookup_classname(s.begin(), s.end())));
    103         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
    104         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
    105         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
    106         assert( t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
    107         assert( t.isctype('-', t.lookup_classname(s.begin(), s.end())));
    108         assert( t.isctype('@', t.lookup_classname(s.begin(), s.end())));
    109 
    110         s = "punct";
    111         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
    112         assert( t.isctype('_', t.lookup_classname(s.begin(), s.end())));
    113         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
    114         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
    115         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
    116         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
    117         assert( t.isctype('-', t.lookup_classname(s.begin(), s.end())));
    118         assert( t.isctype('@', t.lookup_classname(s.begin(), s.end())));
    119 
    120         s = "space";
    121         assert( t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
    122         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
    123         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
    124         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
    125         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
    126         assert( t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
    127         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
    128         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
    129 
    130         s = "upper";
    131         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
    132         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
    133         assert(!t.isctype('a', t.lookup_classname(s.begin(), s.end())));
    134         assert( t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
    135         assert(!t.isctype('5', t.lookup_classname(s.begin(), s.end())));
    136         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
    137         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
    138         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
    139 
    140         s = "xdigit";
    141         assert(!t.isctype('\n', t.lookup_classname(s.begin(), s.end())));
    142         assert(!t.isctype('_', t.lookup_classname(s.begin(), s.end())));
    143         assert( t.isctype('a', t.lookup_classname(s.begin(), s.end())));
    144         assert(!t.isctype('Z', t.lookup_classname(s.begin(), s.end())));
    145         assert( t.isctype('5', t.lookup_classname(s.begin(), s.end())));
    146         assert(!t.isctype(' ', t.lookup_classname(s.begin(), s.end())));
    147         assert(!t.isctype('-', t.lookup_classname(s.begin(), s.end())));
    148         assert(!t.isctype('@', t.lookup_classname(s.begin(), s.end())));
    149     }
    150     {
    151         std::regex_traits<wchar_t> t;
    152 
    153         std::wstring s(L"w");
    154         assert( t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    155         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    156         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    157         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    158         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    159         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    160         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    161 
    162         s = L"alnum";
    163         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    164         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    165         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    166         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    167         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    168         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    169         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    170 
    171         s = L"alpha";
    172         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    173         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    174         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    175         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    176         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    177         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    178         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    179 
    180         s = L"blank";
    181         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    182         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    183         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    184         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    185         assert( t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    186         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    187         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    188 
    189         s = L"cntrl";
    190         assert( t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
    191         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    192         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    193         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    194         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    195         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    196         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    197         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    198 
    199         s = L"digit";
    200         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
    201         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    202         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    203         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    204         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    205         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    206         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    207         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    208 
    209         s = L"graph";
    210         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
    211         assert( t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    212         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    213         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    214         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    215         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    216         assert( t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    217         assert( t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    218 
    219         s = L"lower";
    220         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
    221         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    222         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    223         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    224         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    225         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    226         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    227         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    228 
    229         s = L"print";
    230         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
    231         assert( t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    232         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    233         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    234         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    235         assert( t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    236         assert( t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    237         assert( t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    238 
    239         s = L"punct";
    240         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
    241         assert( t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    242         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    243         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    244         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    245         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    246         assert( t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    247         assert( t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    248 
    249         s = L"space";
    250         assert( t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
    251         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    252         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    253         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    254         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    255         assert( t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    256         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    257         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    258 
    259         s = L"upper";
    260         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
    261         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    262         assert(!t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    263         assert( t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    264         assert(!t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    265         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    266         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    267         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    268 
    269         s = L"xdigit";
    270         assert(!t.isctype(L'\n', t.lookup_classname(s.begin(), s.end())));
    271         assert(!t.isctype(L'_', t.lookup_classname(s.begin(), s.end())));
    272         assert( t.isctype(L'a', t.lookup_classname(s.begin(), s.end())));
    273         assert(!t.isctype(L'Z', t.lookup_classname(s.begin(), s.end())));
    274         assert( t.isctype(L'5', t.lookup_classname(s.begin(), s.end())));
    275         assert(!t.isctype(L' ', t.lookup_classname(s.begin(), s.end())));
    276         assert(!t.isctype(L'-', t.lookup_classname(s.begin(), s.end())));
    277         assert(!t.isctype(L'@', t.lookup_classname(s.begin(), s.end())));
    278     }
    279 }
    280