1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is dual licensed under the MIT and the University of Illinois Open 6// Source Licenses. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <locale> 11 12// class time_get<charT, InputIterator> 13 14// iter_type 15// get_monthname(iter_type s, iter_type end, ios_base& str, 16// ios_base::iostate& err, tm* t) const; 17 18#include <locale> 19#include <cassert> 20#include "test_iterators.h" 21 22typedef input_iterator<const char*> I; 23 24typedef std::time_get<char, I> F; 25 26class my_facet 27 : public F 28{ 29public: 30 explicit my_facet(std::size_t refs = 0) 31 : F(refs) {} 32}; 33 34int main() 35{ 36 const my_facet f(1); 37 std::ios ios(0); 38 std::ios_base::iostate err; 39 std::tm t; 40 { 41 const char in[] = "Jan"; 42 err = std::ios_base::goodbit; 43 t = std::tm(); 44 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 45 assert(i.base() == in+3); 46 assert(t.tm_mon == 0); 47 assert(err == std::ios_base::eofbit); 48 } 49 { 50 const char in[] = "Feb"; 51 err = std::ios_base::goodbit; 52 t = std::tm(); 53 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 54 assert(i.base() == in+3); 55 assert(t.tm_mon == 1); 56 assert(err == std::ios_base::eofbit); 57 } 58 { 59 const char in[] = "Mar"; 60 err = std::ios_base::goodbit; 61 t = std::tm(); 62 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 63 assert(i.base() == in+3); 64 assert(t.tm_mon == 2); 65 assert(err == std::ios_base::eofbit); 66 } 67 { 68 const char in[] = "Apr"; 69 err = std::ios_base::goodbit; 70 t = std::tm(); 71 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 72 assert(i.base() == in+3); 73 assert(t.tm_mon == 3); 74 assert(err == std::ios_base::eofbit); 75 } 76 { 77 const char in[] = "May"; 78 err = std::ios_base::goodbit; 79 t = std::tm(); 80 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 81 assert(i.base() == in+3); 82 assert(t.tm_mon == 4); 83 assert(err == std::ios_base::eofbit); 84 } 85 { 86 const char in[] = "Jun"; 87 err = std::ios_base::goodbit; 88 t = std::tm(); 89 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 90 assert(i.base() == in+3); 91 assert(t.tm_mon == 5); 92 assert(err == std::ios_base::eofbit); 93 } 94 { 95 const char in[] = "Jul"; 96 err = std::ios_base::goodbit; 97 t = std::tm(); 98 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 99 assert(i.base() == in+3); 100 assert(t.tm_mon == 6); 101 assert(err == std::ios_base::eofbit); 102 } 103 { 104 const char in[] = "Aug"; 105 err = std::ios_base::goodbit; 106 t = std::tm(); 107 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 108 assert(i.base() == in+3); 109 assert(t.tm_mon == 7); 110 assert(err == std::ios_base::eofbit); 111 } 112 { 113 const char in[] = "Sep"; 114 err = std::ios_base::goodbit; 115 t = std::tm(); 116 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 117 assert(i.base() == in+3); 118 assert(t.tm_mon == 8); 119 assert(err == std::ios_base::eofbit); 120 } 121 { 122 const char in[] = "Oct"; 123 err = std::ios_base::goodbit; 124 t = std::tm(); 125 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 126 assert(i.base() == in+3); 127 assert(t.tm_mon == 9); 128 assert(err == std::ios_base::eofbit); 129 } 130 { 131 const char in[] = "Nov"; 132 err = std::ios_base::goodbit; 133 t = std::tm(); 134 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 135 assert(i.base() == in+3); 136 assert(t.tm_mon == 10); 137 assert(err == std::ios_base::eofbit); 138 } 139 { 140 const char in[] = "Dec"; 141 err = std::ios_base::goodbit; 142 t = std::tm(); 143 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 144 assert(i.base() == in+3); 145 assert(t.tm_mon == 11); 146 assert(err == std::ios_base::eofbit); 147 } 148 { 149 const char in[] = "January"; 150 err = std::ios_base::goodbit; 151 t = std::tm(); 152 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 153 assert(i.base() == in+7); 154 assert(t.tm_mon == 0); 155 assert(err == std::ios_base::eofbit); 156 } 157 { 158 const char in[] = "February"; 159 err = std::ios_base::goodbit; 160 t = std::tm(); 161 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 162 assert(i.base() == in+8); 163 assert(t.tm_mon == 1); 164 assert(err == std::ios_base::eofbit); 165 } 166 { 167 const char in[] = "March"; 168 err = std::ios_base::goodbit; 169 t = std::tm(); 170 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 171 assert(i.base() == in+5); 172 assert(t.tm_mon == 2); 173 assert(err == std::ios_base::eofbit); 174 } 175 { 176 const char in[] = "April"; 177 err = std::ios_base::goodbit; 178 t = std::tm(); 179 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 180 assert(i.base() == in+5); 181 assert(t.tm_mon == 3); 182 assert(err == std::ios_base::eofbit); 183 } 184 { 185 const char in[] = "May"; 186 err = std::ios_base::goodbit; 187 t = std::tm(); 188 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 189 assert(i.base() == in+3); 190 assert(t.tm_mon == 4); 191 assert(err == std::ios_base::eofbit); 192 } 193 { 194 const char in[] = "June"; 195 err = std::ios_base::goodbit; 196 t = std::tm(); 197 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 198 assert(i.base() == in+4); 199 assert(t.tm_mon == 5); 200 assert(err == std::ios_base::eofbit); 201 } 202 { 203 const char in[] = "July"; 204 err = std::ios_base::goodbit; 205 t = std::tm(); 206 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 207 assert(i.base() == in+4); 208 assert(t.tm_mon == 6); 209 assert(err == std::ios_base::eofbit); 210 } 211 { 212 const char in[] = "August"; 213 err = std::ios_base::goodbit; 214 t = std::tm(); 215 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 216 assert(i.base() == in+6); 217 assert(t.tm_mon == 7); 218 assert(err == std::ios_base::eofbit); 219 } 220 { 221 const char in[] = "September"; 222 err = std::ios_base::goodbit; 223 t = std::tm(); 224 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 225 assert(i.base() == in+9); 226 assert(t.tm_mon == 8); 227 assert(err == std::ios_base::eofbit); 228 } 229 { 230 const char in[] = "October"; 231 err = std::ios_base::goodbit; 232 t = std::tm(); 233 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 234 assert(i.base() == in+7); 235 assert(t.tm_mon == 9); 236 assert(err == std::ios_base::eofbit); 237 } 238 { 239 const char in[] = "November"; 240 err = std::ios_base::goodbit; 241 t = std::tm(); 242 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 243 assert(i.base() == in+8); 244 assert(t.tm_mon == 10); 245 assert(err == std::ios_base::eofbit); 246 } 247 { 248 const char in[] = "December"; 249 err = std::ios_base::goodbit; 250 t = std::tm(); 251 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 252 assert(i.base() == in+8); 253 assert(t.tm_mon == 11); 254 assert(err == std::ios_base::eofbit); 255 } 256 { 257 const char in[] = "Decemper"; 258 err = std::ios_base::goodbit; 259 t = std::tm(); 260 I i = f.get_monthname(I(in), I(in+sizeof(in)-1), ios, err, &t); 261 assert(i.base() == in+5); 262 assert(t.tm_mon == 0); 263 assert(err == std::ios_base::failbit); 264 } 265} 266