Home | History | Annotate | Download | only in locale.time.get.members
      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 // <locale>
     11 
     12 // class time_get<charT, InputIterator>
     13 
     14 // iter_type
     15 // get_monthname(iter_type s, iter_type end, ios_base& str,
     16 //               ios_base::iostate& err, tm* t) const;
     17 
     18 #include <locale>
     19 #include <cassert>
     20 #include "test_iterators.h"
     21 
     22 typedef input_iterator<const wchar_t*> I;
     23 
     24 typedef std::time_get<wchar_t, I> F;
     25 
     26 class my_facet
     27     : public F
     28 {
     29 public:
     30     explicit my_facet(std::size_t refs = 0)
     31         : F(refs) {}
     32 };
     33 
     34 int main()
     35 {
     36     const my_facet f(1);
     37     std::ios ios(0);
     38     std::ios_base::iostate err;
     39     std::tm t;
     40     {
     41         const wchar_t in[] = L"Jan";
     42         err = std::ios_base::goodbit;
     43         t = std::tm();
     44         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     45         assert(i.base() == in+3);
     46         assert(t.tm_mon == 0);
     47         assert(err == std::ios_base::eofbit);
     48     }
     49     {
     50         const wchar_t in[] = L"Feb";
     51         err = std::ios_base::goodbit;
     52         t = std::tm();
     53         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     54         assert(i.base() == in+3);
     55         assert(t.tm_mon == 1);
     56         assert(err == std::ios_base::eofbit);
     57     }
     58     {
     59         const wchar_t in[] = L"Mar";
     60         err = std::ios_base::goodbit;
     61         t = std::tm();
     62         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     63         assert(i.base() == in+3);
     64         assert(t.tm_mon == 2);
     65         assert(err == std::ios_base::eofbit);
     66     }
     67     {
     68         const wchar_t in[] = L"Apr";
     69         err = std::ios_base::goodbit;
     70         t = std::tm();
     71         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     72         assert(i.base() == in+3);
     73         assert(t.tm_mon == 3);
     74         assert(err == std::ios_base::eofbit);
     75     }
     76     {
     77         const wchar_t in[] = L"May";
     78         err = std::ios_base::goodbit;
     79         t = std::tm();
     80         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     81         assert(i.base() == in+3);
     82         assert(t.tm_mon == 4);
     83         assert(err == std::ios_base::eofbit);
     84     }
     85     {
     86         const wchar_t in[] = L"Jun";
     87         err = std::ios_base::goodbit;
     88         t = std::tm();
     89         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     90         assert(i.base() == in+3);
     91         assert(t.tm_mon == 5);
     92         assert(err == std::ios_base::eofbit);
     93     }
     94     {
     95         const wchar_t in[] = L"Jul";
     96         err = std::ios_base::goodbit;
     97         t = std::tm();
     98         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     99         assert(i.base() == in+3);
    100         assert(t.tm_mon == 6);
    101         assert(err == std::ios_base::eofbit);
    102     }
    103     {
    104         const wchar_t in[] = L"Aug";
    105         err = std::ios_base::goodbit;
    106         t = std::tm();
    107         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    108         assert(i.base() == in+3);
    109         assert(t.tm_mon == 7);
    110         assert(err == std::ios_base::eofbit);
    111     }
    112     {
    113         const wchar_t in[] = L"Sep";
    114         err = std::ios_base::goodbit;
    115         t = std::tm();
    116         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    117         assert(i.base() == in+3);
    118         assert(t.tm_mon == 8);
    119         assert(err == std::ios_base::eofbit);
    120     }
    121     {
    122         const wchar_t in[] = L"Oct";
    123         err = std::ios_base::goodbit;
    124         t = std::tm();
    125         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    126         assert(i.base() == in+3);
    127         assert(t.tm_mon == 9);
    128         assert(err == std::ios_base::eofbit);
    129     }
    130     {
    131         const wchar_t in[] = L"Nov";
    132         err = std::ios_base::goodbit;
    133         t = std::tm();
    134         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    135         assert(i.base() == in+3);
    136         assert(t.tm_mon == 10);
    137         assert(err == std::ios_base::eofbit);
    138     }
    139     {
    140         const wchar_t in[] = L"Dec";
    141         err = std::ios_base::goodbit;
    142         t = std::tm();
    143         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    144         assert(i.base() == in+3);
    145         assert(t.tm_mon == 11);
    146         assert(err == std::ios_base::eofbit);
    147     }
    148     {
    149         const wchar_t in[] = L"January";
    150         err = std::ios_base::goodbit;
    151         t = std::tm();
    152         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    153         assert(i.base() == in+7);
    154         assert(t.tm_mon == 0);
    155         assert(err == std::ios_base::eofbit);
    156     }
    157     {
    158         const wchar_t in[] = L"February";
    159         err = std::ios_base::goodbit;
    160         t = std::tm();
    161         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    162         assert(i.base() == in+8);
    163         assert(t.tm_mon == 1);
    164         assert(err == std::ios_base::eofbit);
    165     }
    166     {
    167         const wchar_t in[] = L"March";
    168         err = std::ios_base::goodbit;
    169         t = std::tm();
    170         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    171         assert(i.base() == in+5);
    172         assert(t.tm_mon == 2);
    173         assert(err == std::ios_base::eofbit);
    174     }
    175     {
    176         const wchar_t in[] = L"April";
    177         err = std::ios_base::goodbit;
    178         t = std::tm();
    179         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    180         assert(i.base() == in+5);
    181         assert(t.tm_mon == 3);
    182         assert(err == std::ios_base::eofbit);
    183     }
    184     {
    185         const wchar_t in[] = L"May";
    186         err = std::ios_base::goodbit;
    187         t = std::tm();
    188         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    189         assert(i.base() == in+3);
    190         assert(t.tm_mon == 4);
    191         assert(err == std::ios_base::eofbit);
    192     }
    193     {
    194         const wchar_t in[] = L"June";
    195         err = std::ios_base::goodbit;
    196         t = std::tm();
    197         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    198         assert(i.base() == in+4);
    199         assert(t.tm_mon == 5);
    200         assert(err == std::ios_base::eofbit);
    201     }
    202     {
    203         const wchar_t in[] = L"July";
    204         err = std::ios_base::goodbit;
    205         t = std::tm();
    206         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    207         assert(i.base() == in+4);
    208         assert(t.tm_mon == 6);
    209         assert(err == std::ios_base::eofbit);
    210     }
    211     {
    212         const wchar_t in[] = L"August";
    213         err = std::ios_base::goodbit;
    214         t = std::tm();
    215         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    216         assert(i.base() == in+6);
    217         assert(t.tm_mon == 7);
    218         assert(err == std::ios_base::eofbit);
    219     }
    220     {
    221         const wchar_t in[] = L"September";
    222         err = std::ios_base::goodbit;
    223         t = std::tm();
    224         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    225         assert(i.base() == in+9);
    226         assert(t.tm_mon == 8);
    227         assert(err == std::ios_base::eofbit);
    228     }
    229     {
    230         const wchar_t in[] = L"October";
    231         err = std::ios_base::goodbit;
    232         t = std::tm();
    233         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    234         assert(i.base() == in+7);
    235         assert(t.tm_mon == 9);
    236         assert(err == std::ios_base::eofbit);
    237     }
    238     {
    239         const wchar_t in[] = L"November";
    240         err = std::ios_base::goodbit;
    241         t = std::tm();
    242         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    243         assert(i.base() == in+8);
    244         assert(t.tm_mon == 10);
    245         assert(err == std::ios_base::eofbit);
    246     }
    247     {
    248         const wchar_t in[] = L"December";
    249         err = std::ios_base::goodbit;
    250         t = std::tm();
    251         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    252         assert(i.base() == in+8);
    253         assert(t.tm_mon == 11);
    254         assert(err == std::ios_base::eofbit);
    255     }
    256     {
    257         const wchar_t in[] = L"Decemper";
    258         err = std::ios_base::goodbit;
    259         t = std::tm();
    260         I i = f.get_monthname(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    261         assert(i.base() == in+5);
    262         assert(t.tm_mon == 0);
    263         assert(err == std::ios_base::failbit);
    264     }
    265 }
    266