get_time_wide.pass.cpp revision 002a98494836085a3c84e2e844147468d4d39cc7
13c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//===----------------------------------------------------------------------===// 23c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// 33c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// The LLVM Compiler Infrastructure 43c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// 53c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// This file is dual licensed under the MIT and the University of Illinois Open 63c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// Source Licenses. See LICENSE.TXT for details. 73c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// 83c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller//===----------------------------------------------------------------------===// 93c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller 103c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// <locale> 113c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller 123c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// class time_get<charT, InputIterator> 133c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller 143c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// iter_type 153c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// get_time(iter_type s, iter_type end, ios_base& str, 163c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// ios_base::iostate& err, tm* t) const; 173c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller 183c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller#include <locale> 193c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller#include <cassert> 203c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller#include "../../../../iterators.h" 213c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller 223c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullertypedef input_iterator<const wchar_t*> I; 233c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller 243c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullertypedef std::time_get<wchar_t, I> F; 253c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller 263c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerclass my_facet 273c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller : public F 283c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller{ 293c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerpublic: 303c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller explicit my_facet(std::size_t refs = 0) 313c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller : F(refs) {} 323c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller}; 333c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller 343c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fullerint main() 353c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller{ 363c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller const my_facet f(1); 373c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller std::ios ios(0); 383c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller std::ios_base::iostate err; 393c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller std::tm t; 403c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller { 413c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller const wchar_t in[] = L"0:0:0"; 423c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller err = std::ios_base::goodbit; 433c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller t = std::tm(); 443c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 453c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 463c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_hour == 0); 473c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_min == 0); 483c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_sec == 0); 493c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(err == std::ios_base::eofbit); 503c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller } 513c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller { 523c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller const wchar_t in[] = L"23:59:60"; 533c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller err = std::ios_base::goodbit; 543c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller t = std::tm(); 553c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 563c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 573c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_hour == 23); 583c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_min == 59); 593c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_sec == 60); 603c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(err == std::ios_base::eofbit); 613c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller } 623c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller { 633c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller const wchar_t in[] = L"24:59:60"; 643c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller err = std::ios_base::goodbit; 653c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller t = std::tm(); 663c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 673c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(i.base() == in+2); 683c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_hour == 0); 693c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_min == 0); 703c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_sec == 0); 713c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(err == std::ios_base::failbit); 723c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller } 733c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller { 743c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller const wchar_t in[] = L"23:60:60"; 753c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller err = std::ios_base::goodbit; 763c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller t = std::tm(); 773c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 783c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(i.base() == in+5); 793c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// assert(t.tm_hour == 0); 803c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// assert(t.tm_min == 0); 813c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// assert(t.tm_sec == 0); 823c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(err == std::ios_base::failbit); 833c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller } 843c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller { 853c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller const wchar_t in[] = L"23:59:61"; 863c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller err = std::ios_base::goodbit; 873c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller t = std::tm(); 883c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 893c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(i.base() == in+8); 903c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// assert(t.tm_hour == 0); 913c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// assert(t.tm_min == 0); 923c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// assert(t.tm_sec == 0); 933c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(err == (std::ios_base::failbit | std::ios_base::eofbit)); 943c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller } 953c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller { 963c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller const wchar_t in[] = L"2:43:221"; 973c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller err = std::ios_base::goodbit; 983c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller t = std::tm(); 993c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 1003c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(i.base() == in+7); 1013c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_hour == 2); 1023c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_min == 43); 1033c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(t.tm_sec == 22); 1043c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(err == std::ios_base::goodbit); 1053c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller } 1063c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller { 1073c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller const wchar_t in[] = L"2.43:221"; 1083c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller err = std::ios_base::goodbit; 1093c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller t = std::tm(); 1103c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 1113c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(i.base() == in+1); 1123c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// assert(t.tm_hour == 0); 1133c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// assert(t.tm_min == 0); 1143c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller// assert(t.tm_sec == 0); 1153c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller assert(err == std::ios_base::failbit); 1163c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller } 1173c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller} 1183c938a3f6b61ce5e2dba0d039b03fe73b89fd26cNeil Fuller