OSDN Git Service

Add NIOS2 support. Code from SourceyG++.
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / 27_io / basic_ostream / inserters_arithmetic / char / 3.cc
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
25 template<typename T>
26 bool
27 test03_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
51 void
52 test03()
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
63 int 
64 main()
65 {
66   test03();
67   return 0;
68 }