get_time_wide.pass.cpp revision 83e2c4d877fe2d7793868b1c6a5d9525a7c4d431
1069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project//===----------------------------------------------------------------------===// 2069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// 3069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// The LLVM Compiler Infrastructure 4069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// 5069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// This file is dual licensed under the MIT and the University of Illinois Open 6069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// Source Licenses. See LICENSE.TXT for details. 7069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// 8069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project//===----------------------------------------------------------------------===// 9069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project 10069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// <locale> 11069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project 12069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// class time_get_byname<charT, InputIterator> 13069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project 14069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// iter_type 15069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// get_time(iter_type s, iter_type end, ios_base& str, 16069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project// ios_base::iostate& err, tm* t) const; 17069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project 18069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project#include <locale> 19069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project#include <cassert> 20069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project#include "test_iterators.h" 21069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project 22069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project#include "platform_support.h" // locale name macros 23069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project 24069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projecttypedef input_iterator<const wchar_t*> I; 25069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project 26069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projecttypedef std::time_get_byname<wchar_t, I> F; 27069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project 28069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectclass my_facet 29069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project : public F 30069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project{ 31069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectpublic: 32069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project explicit my_facet(const std::string& nm, std::size_t refs = 0) 33069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project : F(nm, refs) {} 34069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project}; 35069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project 36069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectint main() 37069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project{ 38d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath std::ios ios(0); 39d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath std::ios_base::iostate err; 40d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath std::tm t; 41d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath { 42069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project const my_facet f(LOCALE_en_US_UTF_8, 1); 43d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath const wchar_t in[] = L"13:14:15"; 44069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project err = std::ios_base::goodbit; 45069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project t = std::tm(); 46069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 47069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 48069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(t.tm_hour == 13); 49069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(t.tm_min == 14); 50069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(t.tm_sec == 15); 51069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(err == std::ios_base::eofbit); 52069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project } 53069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project { 54069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project const my_facet f(LOCALE_fr_FR_UTF_8, 1); 55069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project const wchar_t in[] = L"13:14:15"; 56069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project err = std::ios_base::goodbit; 57069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project t = std::tm(); 58069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 59069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 60069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(t.tm_hour == 13); 61069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(t.tm_min == 14); 62069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(t.tm_sec == 15); 63069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project assert(err == std::ios_base::eofbit); 64069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project } 65069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project { 66069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project const my_facet f(LOCALE_ru_RU_UTF_8, 1); 67069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project const wchar_t in[] = L"13:14:15"; 68069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project err = std::ios_base::goodbit; 69 t = std::tm(); 70 I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 71 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 72 assert(t.tm_hour == 13); 73 assert(t.tm_min == 14); 74 assert(t.tm_sec == 15); 75 assert(err == std::ios_base::eofbit); 76 } 77 { 78 const my_facet f(LOCALE_zh_CN_UTF_8, 1); 79 const wchar_t in[] = L"13:14:15"; 80 err = std::ios_base::goodbit; 81 t = std::tm(); 82 I i = f.get_time(I(in), I(in+sizeof(in)/sizeof(in[0])-1), ios, err, &t); 83 assert(i.base() == in+sizeof(in)/sizeof(in[0])-1); 84 assert(t.tm_hour == 13); 85 assert(t.tm_min == 14); 86 assert(t.tm_sec == 15); 87 assert(err == std::ios_base::eofbit); 88 } 89} 90