1// 1999-11-15 Kevin Ediger <kediger@licor.com> 2// test the floating point inserters (facet num_put) 3 4// Copyright (C) 1999, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. 5// 6// This file is part of the GNU ISO C++ Library. This library is free 7// software; you can redistribute it and/or modify it under the 8// terms of the GNU General Public License as published by the 9// Free Software Foundation; either version 3, or (at your option) 10// any later version. 11 12// This library is distributed in the hope that it will be useful, 13// but WITHOUT ANY WARRANTY; without even the implied warranty of 14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15// GNU General Public License for more details. 16 17// You should have received a copy of the GNU General Public License along 18// with this library; see the file COPYING3. If not see 19// <http://www.gnu.org/licenses/>. 20 21#include <sstream> 22#include <limits> 23#include <testsuite_hooks.h> 24 25template<typename T> 26bool 27test03_check(T n) 28{ 29 using namespace std; 30 bool test __attribute__((unused)) = true; 31 32 stringbuf strbuf; 33 ostream o(&strbuf); 34 const char *expect; 35 36 if (numeric_limits<T>::digits + 1 == 16) 37 expect = "177777 ffff"; 38 else if (numeric_limits<T>::digits + 1 == 32) 39 expect = "37777777777 ffffffff"; 40 else if (numeric_limits<T>::digits + 1 == 64) 41 expect = "1777777777777777777777 ffffffffffffffff"; 42 else 43 expect = "wow, you've got some big numbers here"; 44 45 o << oct << n << ' ' << hex << n; 46 VERIFY ( strbuf.str() == expect ); 47 48 return test; 49} 50 51void 52test03() 53{ 54 short s = -1; 55 int i = -1; 56 long l = -1; 57 58 test03_check (s); 59 test03_check (i); 60 test03_check (l); 61} 62 63int 64main() 65{ 66 test03(); 67 return 0; 68} 69