get_date_wide.pass.cpp revision e2f2a15066552758a508e8a7325e0ccad4a5389b
143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//===----------------------------------------------------------------------===//
243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//
343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//                     The LLVM Compiler Infrastructure
443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//
543dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// This file is dual licensed under the MIT and the University of Illinois Open
643dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// Source Licenses. See LICENSE.TXT for details.
743dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//
843dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis//===----------------------------------------------------------------------===//
943dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis
1043dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// <locale>
1143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis
1243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// class time_get_byname<charT, InputIterator>
1343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis
1443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// iter_type
15ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek// get_date(iter_type s, iter_type end, ios_base& str,
16769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis//          ios_base::iostate& err, tm* t) const;
17d1e5a89226da79f7e6f43d40facc46abda9e5245Jordy Rose
18769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis#include <locale>
199fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis#include <cassert>
2043dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis#include "iterators.h"
2143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis
2243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidistypedef input_iterator<const wchar_t*> I;
2343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis
24d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidistypedef std::time_get_byname<wchar_t, I> F;
25d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis
26d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidisclass my_facet
27d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    : public F
28d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis{
29d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidispublic:
30d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    explicit my_facet(const std::string& nm, std::size_t refs = 0)
31d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis        : F(nm, refs) {}
32d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis};
33d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis
34d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidisint main()
35d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis{
36d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    std::ios ios(0);
37dff6ef903ff4fcb43b5ea292ecd772e381393b5dAnna Zaks    std::ios_base::iostate err;
38dff6ef903ff4fcb43b5ea292ecd772e381393b5dAnna Zaks    std::tm t;
39d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis    {
40d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis        const my_facet f("en_US.UTF-8", 1);
41deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis        const wchar_t in[] = L"06/10/2009";
42deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis        err = std::ios_base::goodbit;
43deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis        t = std::tm();
44deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis        I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
45deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
46deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis        assert(t.tm_mon == 5);
47deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis        assert(t.tm_mday == 10);
48deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis        assert(t.tm_year == 109);
49deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis        assert(err == std::ios_base::eofbit);
50deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis    }
51769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis    {
52769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis        const my_facet f("fr_FR.UTF-8", 1);
53769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis        const wchar_t in[] = L"10.06.2009";
54769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis        err = std::ios_base::goodbit;
559fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        t = std::tm();
569fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
579fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
589fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(t.tm_mon == 5);
599fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(t.tm_mday == 10);
609fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(t.tm_year == 109);
619fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(err == std::ios_base::eofbit);
629fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis    }
639fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis    {
649fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        const my_facet f("ru_RU.UTF-8", 1);
659fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        const wchar_t in[] = L"10.06.2009";
669fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        err = std::ios_base::goodbit;
679fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        t = std::tm();
689fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
699fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
70769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis        assert(t.tm_mon == 5);
719fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(t.tm_mday == 10);
729fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(t.tm_year == 109);
739fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(err == std::ios_base::eofbit);
749fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis    }
759fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis    {
76769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis        const my_facet f("zh_CN.UTF-8", 1);
77769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis        const wchar_t in[] = L"2009/06/10";
789fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        err = std::ios_base::goodbit;
799fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        t = std::tm();
809fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        I i = f.get_date(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t);
819fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(i.base() == in+sizeof(in)/sizeof(in[0])-1);
829fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(t.tm_mon == 5);
839fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis        assert(t.tm_mday == 10);
84769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis        assert(t.tm_year == 109);
85769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis        assert(err == std::ios_base::eofbit);
86769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis    }
87769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis}
88769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis