1 // 2005-04-26 Paolo Carlini <pcarlini@suse.de>
3 // Copyright (C) 2005 Free Software Foundation
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 2, or (at your option)
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING. If not, write to the Free
18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
21 // 22.2.2.1.1 num_get members
26 #include <testsuite_hooks.h>
31 typedef istreambuf_iterator<char> iterator_type;
33 bool test __attribute__((unused)) = true;
36 const num_get<char>& ng = use_facet<num_get<char> >(ss.getloc());
37 ios_base::iostate err;
40 unsigned short us0, us1 = numeric_limits<unsigned short>::max();
41 unsigned int ui0, ui1 = numeric_limits<unsigned int>::max();
42 unsigned long ul0, ul1 = numeric_limits<unsigned long>::max();
43 long l01, l1 = numeric_limits<long>::max();
44 long l02, l2 = numeric_limits<long>::min();
45 #ifdef _GLIBCXX_USE_LONG_LONG
46 unsigned long long ull0, ull1 = numeric_limits<unsigned long long>::max();
47 long long ll01, ll1 = numeric_limits<long long>::max();
48 long long ll02, ll2 = numeric_limits<long long>::min();
55 err = ios_base::goodbit;
56 end = ng.get(ss.rdbuf(), 0, ss, err, us0);
57 VERIFY( err == ios_base::eofbit );
64 err = ios_base::goodbit;
65 end = ng.get(ss.rdbuf(), 0, ss, err, us0);
66 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
73 err = ios_base::goodbit;
74 end = ng.get(ss.rdbuf(), 0, ss, err, ui0);
75 VERIFY( err == ios_base::goodbit );
82 err = ios_base::goodbit;
83 end = ng.get(ss.rdbuf(), 0, ss, err, ui0);
84 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
91 err = ios_base::goodbit;
92 end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
93 VERIFY( err == ios_base::eofbit );
100 err = ios_base::goodbit;
101 end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
102 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
103 VERIFY( ul0 == 0UL );
109 err = ios_base::goodbit;
110 end = ng.get(ss.rdbuf(), 0, ss, err, l01);
111 VERIFY( err == ios_base::goodbit );
118 err = ios_base::goodbit;
119 end = ng.get(ss.rdbuf(), 0, ss, err, l01);
120 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
127 err = ios_base::goodbit;
128 end = ng.get(ss.rdbuf(), 0, ss, err, l02);
129 VERIFY( err == ios_base::eofbit );
136 err = ios_base::goodbit;
137 end = ng.get(ss.rdbuf(), 0, ss, err, l02);
138 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
141 #ifdef _GLIBCXX_USE_LONG_LONG
146 err = ios_base::goodbit;
147 end = ng.get(ss.rdbuf(), 0, ss, err, ull0);
148 VERIFY( err == ios_base::goodbit );
149 VERIFY( ull0 == ull1 );
155 err = ios_base::goodbit;
156 end = ng.get(ss.rdbuf(), 0, ss, err, ull0);
157 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
158 VERIFY( ull0 == 0ULL );
164 err = ios_base::goodbit;
165 end = ng.get(ss.rdbuf(), 0, ss, err, ll01);
166 VERIFY( err == ios_base::eofbit );
167 VERIFY( ll01 == ll1 );
173 err = ios_base::goodbit;
174 end = ng.get(ss.rdbuf(), 0, ss, err, ll01);
175 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
176 VERIFY( ll01 == 0LL );
182 err = ios_base::goodbit;
183 end = ng.get(ss.rdbuf(), 0, ss, err, ll02);
184 VERIFY( err == ios_base::goodbit );
185 VERIFY( ll02 == ll2 );
191 err = ios_base::goodbit;
192 end = ng.get(ss.rdbuf(), 0, ss, err, ll02);
193 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
194 VERIFY( ll02 == 0LL );