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