get_year_wide.pass.cpp revision 239e341c94184e2ed2357f2e054c84fbb1fbed2a
1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <locale> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// class time_get_byname<charT, InputIterator> 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// iter_type get_year(iter_type s, iter_type end, ios_base& str, 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// ios_base::iostate& err, tm* t) const; 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <locale> 18061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include <cassert> 1929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant#include "../../../../iterators.h" 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "../../../../platform_support.h" // locale name macros 2229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttypedef input_iterator<const wchar_t*> I; 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttypedef std::time_get_byname<wchar_t, I> F; 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass my_facet 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : public F 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnantpublic: 3129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant explicit my_facet(const std::string& nm, std::size_t refs = 0) 3229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant : F(nm, refs) {} 3329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant}; 3429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant 3529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnantint main() 3629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant{ 3729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::ios ios(0); 3829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::ios_base::iostate err; 3929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::tm t; 4029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 4129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant const my_facet f(LOCALE_en_US_UTF_8, 1); 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant const wchar_t in[] = L"2009"; 43 err = std::ios_base::goodbit; 44 t = std::tm(); 45 I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 46 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 47 assert(t.tm_year == 109); 48 assert(err == std::ios_base::eofbit); 49 } 50 { 51 const my_facet f(LOCALE_fr_FR_UTF_8, 1); 52 const wchar_t in[] = L"2009"; 53 err = std::ios_base::goodbit; 54 t = std::tm(); 55 I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 56 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 57 assert(t.tm_year == 109); 58 assert(err == std::ios_base::eofbit); 59 } 60 { 61 const my_facet f(LOCALE_ru_RU_UTF_8, 1); 62 const wchar_t in[] = L"2009"; 63 err = std::ios_base::goodbit; 64 t = std::tm(); 65 I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 66 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 67 assert(t.tm_year == 109); 68 assert(err == std::ios_base::eofbit); 69 } 70 { 71 const my_facet f(LOCALE_zh_CN_UTF_8, 1); 72 const wchar_t in[] = L"2009"; 73 err = std::ios_base::goodbit; 74 t = std::tm(); 75 I i = f.get_year(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 76 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 77 assert(t.tm_year == 109); 78 assert(err == std::ios_base::eofbit); 79 } 80} 81