get_time_wide.pass.cpp revision 002a98494836085a3c84e2e844147468d4d39cc7
13c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//===----------------------------------------------------------------------===//
23c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//
33c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//                     The LLVM Compiler Infrastructure
43c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//
53c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// This file is dual licensed under the MIT and the University of Illinois Open
63c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// Source Licenses. See LICENSE.TXT for details.
73c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//
83c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//===----------------------------------------------------------------------===//
93c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
103c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// <locale>
113c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
123c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// class time_get<charT, InputIterator>
133c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
143c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// iter_type
153c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// get_time(iter_type s, iter_type end, ios_base& str,
163c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//          ios_base::iostate& err, tm* t) const;
173c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
183c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller#include <locale>
193c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller#include <cassert>
203c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller#include "../../../../iterators.h"
213c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
223c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullertypedef input_iterator<const wchar_t*> I;
233c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
243c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullertypedef std::time_get<wchar_t, I> F;
253c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
263c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerclass my_facet
273c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    : public F
283c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller{
293c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerpublic:
303c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    explicit my_facet(std::size_t refs = 0)
313c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        : F(refs) {}
323c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller};
333c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller
343c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerint main()
353c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller{
363c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    const my_facet f(1);
373c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    std::ios ios(0);
383c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    std::ios_base::iostate err;
393c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    std::tm t;
403c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    {
413c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        const wchar_t in[] = L"0:0:0";
423c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        err = std::ios_base::goodbit;
433c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        t = std::tm();
443c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
453c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
463c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_hour == 0);
473c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_min == 0);
483c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_sec == 0);
493c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(err == std::ios_base::eofbit);
503c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    }
513c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    {
523c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        const wchar_t in[] = L"23:59:60";
533c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        err = std::ios_base::goodbit;
543c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        t = std::tm();
553c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
563c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
573c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_hour == 23);
583c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_min == 59);
593c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_sec == 60);
603c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(err == std::ios_base::eofbit);
613c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    }
623c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    {
633c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        const wchar_t in[] = L"24:59:60";
643c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        err = std::ios_base::goodbit;
653c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        t = std::tm();
663c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
673c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(i.base() == in+2);
683c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_hour == 0);
693c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_min == 0);
703c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_sec == 0);
713c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(err == std::ios_base::failbit);
723c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    }
733c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    {
743c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        const wchar_t in[] = L"23:60:60";
753c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        err = std::ios_base::goodbit;
763c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        t = std::tm();
773c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
783c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(i.base() == in+5);
793c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//         assert(t.tm_hour == 0);
803c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//         assert(t.tm_min == 0);
813c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//         assert(t.tm_sec == 0);
823c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(err == std::ios_base::failbit);
833c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    }
843c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    {
853c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        const wchar_t in[] = L"23:59:61";
863c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        err = std::ios_base::goodbit;
873c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        t = std::tm();
883c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
893c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(i.base() == in+8);
903c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//         assert(t.tm_hour == 0);
913c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//         assert(t.tm_min == 0);
923c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//         assert(t.tm_sec == 0);
933c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(err == (std::ios_base::failbit | std::ios_base::eofbit));
943c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    }
953c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    {
963c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        const wchar_t in[] = L"2:43:221";
973c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        err = std::ios_base::goodbit;
983c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        t = std::tm();
993c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
1003c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(i.base() == in+7);
1013c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_hour == 2);
1023c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_min == 43);
1033c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(t.tm_sec == 22);
1043c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(err == std::ios_base::goodbit);
1053c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    }
1063c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    {
1073c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        const wchar_t in[] = L"2.43:221";
1083c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        err = std::ios_base::goodbit;
1093c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        t = std::tm();
1103c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
1113c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(i.base() == in+1);
1123c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//         assert(t.tm_hour == 0);
1133c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//         assert(t.tm_min == 0);
1143c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//         assert(t.tm_sec == 0);
1153c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller        assert(err == std::ios_base::failbit);
1163c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller    }
1173c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller}
1183c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller