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_weekday(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"Sun";
     42         err = std::ios_base::goodbit;
     43         t = std::tm();
     44         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     45         assert(i.base() == in+3);
     46         assert(t.tm_wday == 0);
     47         assert(err == std::ios_base::eofbit);
     48     }
     49     {
     50         const wchar_t in[] = L"Suny";
     51         err = std::ios_base::goodbit;
     52         t = std::tm();
     53         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     54         assert(i.base() == in+3);
     55         assert(t.tm_wday == 0);
     56         assert(err == std::ios_base::goodbit);
     57     }
     58     {
     59         const wchar_t in[] = L"Sund";
     60         err = std::ios_base::goodbit;
     61         t = std::tm();
     62         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     63         assert(i.base() == in+4);
     64         assert(t.tm_wday == 0);
     65         assert(err == (std::ios_base::failbit | std::ios_base::eofbit));
     66     }
     67     {
     68         const wchar_t in[] = L"sun";
     69         err = std::ios_base::goodbit;
     70         t = std::tm();
     71         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     72         assert(i.base() == in+3);
     73         assert(t.tm_wday == 0);
     74         assert(err == std::ios_base::eofbit);
     75     }
     76     {
     77         const wchar_t in[] = L"sunday";
     78         err = std::ios_base::goodbit;
     79         t = std::tm();
     80         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     81         assert(i.base() == in+6);
     82         assert(t.tm_wday == 0);
     83         assert(err == std::ios_base::eofbit);
     84     }
     85     {
     86         const wchar_t in[] = L"Mon";
     87         err = std::ios_base::goodbit;
     88         t = std::tm();
     89         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     90         assert(i.base() == in+3);
     91         assert(t.tm_wday == 1);
     92         assert(err == std::ios_base::eofbit);
     93     }
     94     {
     95         const wchar_t in[] = L"Mony";
     96         err = std::ios_base::goodbit;
     97         t = std::tm();
     98         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
     99         assert(i.base() == in+3);
    100         assert(t.tm_wday == 1);
    101         assert(err == std::ios_base::goodbit);
    102     }
    103     {
    104         const wchar_t in[] = L"Mond";
    105         err = std::ios_base::goodbit;
    106         t = std::tm();
    107         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    108         assert(i.base() == in+4);
    109         assert(t.tm_wday == 0);
    110         assert(err == (std::ios_base::failbit | std::ios_base::eofbit));
    111     }
    112     {
    113         const wchar_t in[] = L"mon";
    114         err = std::ios_base::goodbit;
    115         t = std::tm();
    116         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    117         assert(i.base() == in+3);
    118         assert(t.tm_wday == 1);
    119         assert(err == std::ios_base::eofbit);
    120     }
    121     {
    122         const wchar_t in[] = L"monday";
    123         err = std::ios_base::goodbit;
    124         t = std::tm();
    125         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    126         assert(i.base() == in+6);
    127         assert(t.tm_wday == 1);
    128         assert(err == std::ios_base::eofbit);
    129     }
    130     {
    131         const wchar_t in[] = L"Tue";
    132         err = std::ios_base::goodbit;
    133         t = std::tm();
    134         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    135         assert(i.base() == in+3);
    136         assert(t.tm_wday == 2);
    137         assert(err == std::ios_base::eofbit);
    138     }
    139     {
    140         const wchar_t in[] = L"Tuesday";
    141         err = std::ios_base::goodbit;
    142         t = std::tm();
    143         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    144         assert(i.base() == in+7);
    145         assert(t.tm_wday == 2);
    146         assert(err == std::ios_base::eofbit);
    147     }
    148     {
    149         const wchar_t in[] = L"Wed";
    150         err = std::ios_base::goodbit;
    151         t = std::tm();
    152         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    153         assert(i.base() == in+3);
    154         assert(t.tm_wday == 3);
    155         assert(err == std::ios_base::eofbit);
    156     }
    157     {
    158         const wchar_t in[] = L"Wednesday";
    159         err = std::ios_base::goodbit;
    160         t = std::tm();
    161         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    162         assert(i.base() == in+9);
    163         assert(t.tm_wday == 3);
    164         assert(err == std::ios_base::eofbit);
    165     }
    166     {
    167         const wchar_t in[] = L"Thu";
    168         err = std::ios_base::goodbit;
    169         t = std::tm();
    170         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    171         assert(i.base() == in+3);
    172         assert(t.tm_wday == 4);
    173         assert(err == std::ios_base::eofbit);
    174     }
    175     {
    176         const wchar_t in[] = L"Thursday";
    177         err = std::ios_base::goodbit;
    178         t = std::tm();
    179         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    180         assert(i.base() == in+8);
    181         assert(t.tm_wday == 4);
    182         assert(err == std::ios_base::eofbit);
    183     }
    184     {
    185         const wchar_t in[] = L"Fri";
    186         err = std::ios_base::goodbit;
    187         t = std::tm();
    188         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    189         assert(i.base() == in+3);
    190         assert(t.tm_wday == 5);
    191         assert(err == std::ios_base::eofbit);
    192     }
    193     {
    194         const wchar_t in[] = L"Friday";
    195         err = std::ios_base::goodbit;
    196         t = std::tm();
    197         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    198         assert(i.base() == in+6);
    199         assert(t.tm_wday == 5);
    200         assert(err == std::ios_base::eofbit);
    201     }
    202     {
    203         const wchar_t in[] = L"Sat";
    204         err = std::ios_base::goodbit;
    205         t = std::tm();
    206         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    207         assert(i.base() == in+3);
    208         assert(t.tm_wday == 6);
    209         assert(err == std::ios_base::eofbit);
    210     }
    211     {
    212         const wchar_t in[] = L"Saturday";
    213         err = std::ios_base::goodbit;
    214         t = std::tm();
    215         I i = f.get_weekday(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
    216         assert(i.base() == in+8);
    217         assert(t.tm_wday == 6);
    218         assert(err == std::ios_base::eofbit);
    219     }
    220 }
    221