// { dg-require-namedlocale "de_DE.UTF-8" } // { dg-options " -std=gnu++11 " } // 2014-04-14 RĂ¼diger Sonderfeld // Copyright (C) 2014-2016 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the // Free Software Foundation; either version 3, or (at your option) // any later version. // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License along // with this library; see the file COPYING3. If not see // . // 22.4.5.1.1 (C++11) time_get members [locale.time.get.members] #include #include #include #ifndef _GLIBCXX_ASSERT # include # define PRINT(x) cout << #x << ": " << x << endl # define TESTHEAD(x) cout << x << endl #else # define PRINT(x) do {} while(false) # define TESTHEAD(x) do {} while(false) #endif void test02() { using namespace std; bool test __attribute__((unused)) = true; locale loc_c = locale::classic(); locale loc_de = locale("de_DE.UTF-8"); VERIFY( loc_de != loc_c ); istringstream iss; iss.imbue(loc_de); const time_get& tget = use_facet>(iss.getloc()); typedef istreambuf_iterator iter; const iter end; ios_base::iostate err; tm time; TESTHEAD("German locale test"); iss.str("Montag, den 14. April 2014"); string format = "%A, den %d. %B %Y"; auto ret = tget.get(iter(iss), end, iss, err, &time, format.data(), format.data()+format.size()); PRINT(err); VERIFY(err == ios_base::eofbit); PRINT(time.tm_year); VERIFY(time.tm_year == 114); PRINT(time.tm_mon); VERIFY(time.tm_mon == 3); PRINT(time.tm_wday); VERIFY(time.tm_wday == 1); PRINT(time.tm_mday); VERIFY(time.tm_mday == 14); VERIFY(end == end); TESTHEAD("German locale: Check case-insensitivity"); tm time2; iss.str("Montag, den 14. April 2014"); format = "%A, DEN %d. %B %Y"; // check case-insensitivity ret = tget.get(iter(iss), end, iss, err, &time2, format.data(), format.data()+format.size()); PRINT(err); VERIFY(err == ios_base::eofbit); PRINT(time2.tm_year); VERIFY(time2.tm_year == 114); PRINT(time2.tm_mon); VERIFY(time2.tm_mon == 3); PRINT(time2.tm_wday); VERIFY(time2.tm_wday == 1); PRINT(time2.tm_mday); VERIFY(time2.tm_mday == 14); VERIFY(end == end); TESTHEAD("German locale: Check single"); iss.str("Mittwoch"); ret = tget.get(iter(iss), end, iss, err, &time, 'A'); PRINT(err); VERIFY(err == ios_base::eofbit); PRINT(time.tm_wday); VERIFY(time.tm_wday == 3); VERIFY(end == end); } int main() { test02(); }