get_year_wide.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
12eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie//===----------------------------------------------------------------------===// 220314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson// 335aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson// The LLVM Compiler Infrastructure 420314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson// 520314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson// This file is distributed under the University of Illinois Open Source 620314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson// License. See LICENSE.TXT for details. 720314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson// 820314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson//===----------------------------------------------------------------------===// 920314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson 1020314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson// <locale> 1120314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson 1220314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson// class time_get_byname<charT, InputIterator> 1320314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson 1435aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson// iter_type get_year(iter_type s, iter_type end, ios_base& str, 1520314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson// ios_base::iostate& err, tm* t) const; 1620314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson 1720314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson#include <locale> 1820314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson#include <cassert> 1920314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson#include "iterators.h" 2020314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson 2120314fffcf5d97bab58686cdcb914637b453a166Anders Carlssontypedef input_iterator<const wchar_t*> I; 2220314fffcf5d97bab58686cdcb914637b453a166Anders Carlsson 2320314fffcf5d97bab58686cdcb914637b453a166Anders Carlssontypedef std::time_get_byname<wchar_t, I> F; 2435aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson 2535aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlssonclass my_facet 2635aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson : public F 2735aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson{ 2835aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlssonpublic: 2935aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson explicit my_facet(const std::string& nm, std::size_t refs = 0) 3035aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson : F(nm, refs) {} 3135aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson}; 3235aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson 3335aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlssonint main() 3435aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson{ 3535aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson std::ios ios(0); 3635aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson std::ios_base::iostate err; 3735aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson std::tm t; 3835aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson { 3935aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson const my_facet f("en_US", 1); 4035aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson const wchar_t in[] = L"2009"; 4135aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson err = std::ios_base::goodbit; 4235aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson t = std::tm(); 4335aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 4435aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 4535aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson assert(t.tm_year == 109); 4635aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson assert(err == std::ios_base::eofbit); 4735aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson } 4835aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson { 4935aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson const my_facet f("fr_FR", 1); 5035aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson const wchar_t in[] = L"2009"; 5135aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson err = std::ios_base::goodbit; 5235aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson t = std::tm(); 5335aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 5435aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 5535aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson assert(t.tm_year == 109); 5635aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson assert(err == std::ios_base::eofbit); 5735aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson } 5835aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson { 5935aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson const my_facet f("ru_RU", 1); 6035aa62aacf2b644f2ff2f0bdfd89136323698a39Anders Carlsson const wchar_t in[] = L"2009"; 614d283e1f499560654f10c9166a369fb5c1535354David Blaikie err = std::ios_base::goodbit; 624d283e1f499560654f10c9166a369fb5c1535354David Blaikie t = std::tm(); 634d283e1f499560654f10c9166a369fb5c1535354David Blaikie I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 644d283e1f499560654f10c9166a369fb5c1535354David Blaikie assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 654d283e1f499560654f10c9166a369fb5c1535354David Blaikie assert(t.tm_year == 109); 664d283e1f499560654f10c9166a369fb5c1535354David Blaikie assert(err == std::ios_base::eofbit); 674d283e1f499560654f10c9166a369fb5c1535354David Blaikie } 684d283e1f499560654f10c9166a369fb5c1535354David Blaikie { 694d283e1f499560654f10c9166a369fb5c1535354David Blaikie const my_facet f("zh_CN", 1); 704d283e1f499560654f10c9166a369fb5c1535354David Blaikie const wchar_t in[] = L"2009"; 712eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie err = std::ios_base::goodbit; 722eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie t = std::tm(); 732eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 742eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 752eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie assert(t.tm_year == 109); 762eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie assert(err == std::ios_base::eofbit); 772eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie } 782eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie} 792eb9a959d24ad757a82ecab61f343635ad67749aDavid Blaikie