1// { dg-require-namedlocale "" } 2 3// 2001-11-21 Benjamin Kosnik <bkoz@redhat.com> 4 5// Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation 6// 7// This file is part of the GNU ISO C++ Library. This library is free 8// software; you can redistribute it and/or modify it under the 9// terms of the GNU General Public License as published by the 10// Free Software Foundation; either version 3, or (at your option) 11// any later version. 12 13// This library is distributed in the hope that it will be useful, 14// but WITHOUT ANY WARRANTY; without even the implied warranty of 15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16// GNU General Public License for more details. 17 18// You should have received a copy of the GNU General Public License along 19// with this library; see the file COPYING3. If not see 20// <http://www.gnu.org/licenses/>. 21 22// 22.2.2.1.1 num_get members 23 24#include <locale> 25#include <sstream> 26#include <testsuite_hooks.h> 27 28// Testing the correct parsing of grouped hexadecimals and octals. 29void test05() 30{ 31 using namespace std; 32 33 bool test __attribute__((unused)) = true; 34 35 unsigned long ul; 36 37 wistringstream iss; 38 39 // A locale that expects grouping 40 locale loc_de = locale("de_DE"); 41 iss.imbue(loc_de); 42 43 const num_get<wchar_t>& ng = use_facet<num_get<wchar_t> >(iss.getloc()); 44 const ios_base::iostate goodbit = ios_base::goodbit; 45 ios_base::iostate err = ios_base::goodbit; 46 47 iss.setf(ios::hex, ios::basefield); 48 iss.str(L"0xbf.fff.74c "); 49 err = goodbit; 50 ng.get(iss.rdbuf(), 0, iss, err, ul); 51 VERIFY( err == goodbit ); 52 VERIFY( ul == 0xbffff74c ); 53 54 iss.str(L"0Xf.fff "); 55 err = goodbit; 56 ng.get(iss.rdbuf(), 0, iss, err, ul); 57 VERIFY( err == goodbit ); 58 VERIFY( ul == 0xffff ); 59 60 iss.str(L"ffe "); 61 err = goodbit; 62 ng.get(iss.rdbuf(), 0, iss, err, ul); 63 VERIFY( err == goodbit ); 64 VERIFY( ul == 0xffe ); 65 66 iss.setf(ios::oct, ios::basefield); 67 iss.str(L"07.654.321 "); 68 err = goodbit; 69 ng.get(iss.rdbuf(), 0, iss, err, ul); 70 VERIFY( err == goodbit ); 71 VERIFY( ul == 07654321 ); 72 73 iss.str(L"07.777 "); 74 err = goodbit; 75 ng.get(iss.rdbuf(), 0, iss, err, ul); 76 VERIFY( err == goodbit ); 77 VERIFY( ul == 07777 ); 78 79 iss.str(L"776 "); 80 err = goodbit; 81 ng.get(iss.rdbuf(), 0, iss, err, ul); 82 VERIFY( err == goodbit ); 83 VERIFY( ul == 0776 ); 84} 85 86int main() 87{ 88 test05(); 89 return 0; 90} 91 92 93// Kathleen Hannah, humanitarian, woman, art-thief 94