get_one_wide.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <locale> 11 12// class time_get_byname<charT, InputIterator> 13 14// iter_type get(iter_type s, iter_type end, ios_base& f, 15// ios_base::iostate& err, tm *t, char format, char modifier = 0) const; 16 17#include <locale> 18#include <cassert> 19#include "iterators.h" 20 21typedef input_iterator<const wchar_t*> I; 22 23typedef std::time_get_byname<wchar_t, I> F; 24 25class my_facet 26 : public F 27{ 28public: 29 explicit my_facet(const std::string& nm, std::size_t refs = 0) 30 : F(nm, refs) {} 31}; 32 33int main() 34{ 35 std::ios ios(0); 36 std::ios_base::iostate err; 37 std::tm t; 38 { 39 const my_facet f("en_US", 1); 40 const wchar_t in[] = L"Sat Dec 31 23:55:59 2061"; 41 err = std::ios_base::goodbit; 42 t = std::tm(); 43 I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c'); 44 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 45 assert(t.tm_sec == 59); 46 assert(t.tm_min == 55); 47 assert(t.tm_hour == 23); 48 assert(t.tm_mday == 31); 49 assert(t.tm_mon == 11); 50 assert(t.tm_year == 161); 51 assert(t.tm_wday == 6); 52 assert(err == std::ios_base::eofbit); 53 } 54 { 55 const my_facet f("en_US", 1); 56 const wchar_t in[] = L"23:55:59"; 57 err = std::ios_base::goodbit; 58 t = std::tm(); 59 I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X'); 60 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 61 assert(t.tm_sec == 59); 62 assert(t.tm_min == 55); 63 assert(t.tm_hour == 23); 64 assert(err == std::ios_base::eofbit); 65 } 66 { 67 const my_facet f("fr_FR", 1); 68 const wchar_t in[] = L"Sam 31 d""\xE9""c 23:55:59 2061"; 69 err = std::ios_base::goodbit; 70 t = std::tm(); 71 I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c'); 72 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 73 assert(t.tm_sec == 59); 74 assert(t.tm_min == 55); 75 assert(t.tm_hour == 23); 76 assert(t.tm_mday == 31); 77 assert(t.tm_mon == 11); 78 assert(t.tm_year == 161); 79 assert(t.tm_wday == 6); 80 assert(err == std::ios_base::eofbit); 81 } 82 { 83 const my_facet f("fr_FR", 1); 84 const wchar_t in[] = L"23:55:59"; 85 err = std::ios_base::goodbit; 86 t = std::tm(); 87 I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X'); 88 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 89 assert(t.tm_sec == 59); 90 assert(t.tm_min == 55); 91 assert(t.tm_hour == 23); 92 assert(err == std::ios_base::eofbit); 93 } 94 { 95 const my_facet f("ru_RU", 1); 96 const wchar_t in[] = L"\x441\x443\x431\x431\x43E\x442\x430" 97 ", 31 " 98 "\x434\x435\x43A\x430\x431\x440\x44F" 99 " 2061 " 100 "\x433" 101 ". 23:55:59"; 102 err = std::ios_base::goodbit; 103 t = std::tm(); 104 I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c'); 105 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 106 assert(t.tm_sec == 59); 107 assert(t.tm_min == 55); 108 assert(t.tm_hour == 23); 109 assert(t.tm_mday == 31); 110 assert(t.tm_mon == 11); 111 assert(t.tm_year == 161); 112 assert(t.tm_wday == 6); 113 assert(err == std::ios_base::eofbit); 114 } 115 { 116 const my_facet f("ru_RU", 1); 117 const wchar_t in[] = L"23:55:59"; 118 err = std::ios_base::goodbit; 119 t = std::tm(); 120 I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X'); 121 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 122 assert(t.tm_sec == 59); 123 assert(t.tm_min == 55); 124 assert(t.tm_hour == 23); 125 assert(err == std::ios_base::eofbit); 126 } 127 { 128 const my_facet f("zh_CN", 1); 129 const wchar_t in[] = L"\x516D" 130 " 12/31 23:55:59 2061"; 131 err = std::ios_base::goodbit; 132 t = std::tm(); 133 I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'c'); 134 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 135 assert(t.tm_sec == 59); 136 assert(t.tm_min == 55); 137 assert(t.tm_hour == 23); 138 assert(t.tm_mday == 31); 139 assert(t.tm_mon == 11); 140 assert(t.tm_year == 161); 141 assert(t.tm_wday == 6); 142 assert(err == std::ios_base::eofbit); 143 } 144 { 145 const my_facet f("zh_CN", 1); 146 const wchar_t in[] = L"23""\x65F6""55""\x5206""59""\x79D2"; 147 err = std::ios_base::goodbit; 148 t = std::tm(); 149 I i = f.get(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t, 'X'); 150 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 151 assert(t.tm_sec == 59); 152 assert(t.tm_min == 55); 153 assert(t.tm_hour == 23); 154 assert(err == std::ios_base::eofbit); 155 } 156} 157