OSDN Git Service

Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception.
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / 27_io / basic_istream / extractors_arithmetic / char / 13.cc
1 // 1999-04-12 bkoz
2
3 // Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
4 // 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 // 27.6.1.2.2 arithmetic extractors
22
23 #include <istream>
24 #include <sstream>
25 #include <locale>
26 #include <limits>
27 #include <testsuite_hooks.h>
28
29 // libstdc++/3720 part two
30 void test13()
31 {
32   using namespace std;
33   bool test __attribute__((unused)) = true;
34   const char* l2 = "1.2345678901234567890123456789012345678901234567890123456"
35                    "  "
36                    "1246.9";
37
38   // 1 
39   // used to core.
40   double d;
41   istringstream iss1(l2);
42   iss1 >> d;
43   iss1 >> d;
44   VERIFY (d > 1246 && d < 1247);
45
46   // 2
47   // quick test for failbit on maximum length extraction.
48   int i;
49   int max_digits = numeric_limits<int>::digits10 + 1;
50   string digits;
51   for (int j = 0; j < max_digits; ++j)
52     digits += '1';
53   istringstream iss2(digits);
54   iss2 >> i;
55   VERIFY( !iss2.fail() );
56
57   digits += '1';
58   i = 0;
59   iss2.str(digits);
60   iss2.clear();
61   iss2 >> i; 
62   VERIFY( i == 0 );
63   VERIFY( iss2.fail() );
64 }
65
66 int main()
67 {
68   test13();
69   return 0;
70 }