Dead
[official-gcc.git] / gomp-20050608-branch / libstdc++-v3 / testsuite / 22_locale / num_get / get / char / 16.cc
blobc71e5881baceedd512453bb55af102ae56edcd9b
1 // 2005-04-26 Paolo Carlini <pcarlini@suse.de>
3 // Copyright (C) 2005 Free Software Foundation
4 //
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)
9 // any later version.
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,
19 // USA.
21 // 22.2.2.1.1 num_get members
23 #include <locale>
24 #include <sstream>
25 #include <limits>
26 #include <testsuite_hooks.h>
28 void test01()
30 using namespace std;
31 typedef istreambuf_iterator<char> iterator_type;
33 bool test __attribute__((unused)) = true;
35 stringstream ss;
36 const num_get<char>& ng = use_facet<num_get<char> >(ss.getloc());
37 ios_base::iostate err;
38 iterator_type end;
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();
49 #endif
51 const string empty;
53 us0 = 0;
54 ss << us1;
55 err = ios_base::goodbit;
56 end = ng.get(ss.rdbuf(), 0, ss, err, us0);
57 VERIFY( err == ios_base::eofbit );
58 VERIFY( us0 == us1 );
60 us0 = 0;
61 ss.clear();
62 ss.str(empty);
63 ss << us1 << '0';
64 err = ios_base::goodbit;
65 end = ng.get(ss.rdbuf(), 0, ss, err, us0);
66 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
67 VERIFY( us0 == 0 );
69 ui0 = 0U;
70 ss.clear();
71 ss.str(empty);
72 ss << ui1 << ' ';
73 err = ios_base::goodbit;
74 end = ng.get(ss.rdbuf(), 0, ss, err, ui0);
75 VERIFY( err == ios_base::goodbit );
76 VERIFY( ui0 == ui1 );
78 ui0 = 0U;
79 ss.clear();
80 ss.str(empty);
81 ss << ui1 << '1';
82 err = ios_base::goodbit;
83 end = ng.get(ss.rdbuf(), 0, ss, err, ui0);
84 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
85 VERIFY( ui0 == 0U );
87 ul0 = 0UL;
88 ss.clear();
89 ss.str(empty);
90 ss << ul1;
91 err = ios_base::goodbit;
92 end = ng.get(ss.rdbuf(), 0, ss, err, ul0);
93 VERIFY( err == ios_base::eofbit );
94 VERIFY( ul0 == ul1 );
96 ul0 = 0UL;
97 ss.clear();
98 ss.str(empty);
99 ss << ul1 << '2';
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 );
105 l01 = 0L;
106 ss.clear();
107 ss.str(empty);
108 ss << l1 << ' ';
109 err = ios_base::goodbit;
110 end = ng.get(ss.rdbuf(), 0, ss, err, l01);
111 VERIFY( err == ios_base::goodbit );
112 VERIFY( l01 == l1 );
114 l01 = 0L;
115 ss.clear();
116 ss.str(empty);
117 ss << l1 << '3';
118 err = ios_base::goodbit;
119 end = ng.get(ss.rdbuf(), 0, ss, err, l01);
120 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
121 VERIFY( l01 == 0L );
123 l02 = 0L;
124 ss.clear();
125 ss.str(empty);
126 ss << l2;
127 err = ios_base::goodbit;
128 end = ng.get(ss.rdbuf(), 0, ss, err, l02);
129 VERIFY( err == ios_base::eofbit );
130 VERIFY( l02 == l2 );
132 l02 = 0L;
133 ss.clear();
134 ss.str(empty);
135 ss << l2 << '4';
136 err = ios_base::goodbit;
137 end = ng.get(ss.rdbuf(), 0, ss, err, l02);
138 VERIFY( err == (ios_base::failbit | ios_base::eofbit) );
139 VERIFY( l02 == 0L );
141 #ifdef _GLIBCXX_USE_LONG_LONG
142 ull0 = 0ULL;
143 ss.clear();
144 ss.str(empty);
145 ss << ull1 << ' ';
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 );
151 ull0 = 0ULL;
152 ss.clear();
153 ss.str(empty);
154 ss << ull1 << '5';
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 );
160 ll01 = 0LL;
161 ss.clear();
162 ss.str(empty);
163 ss << ll1;
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 );
169 ll01 = 0LL;
170 ss.clear();
171 ss.str(empty);
172 ss << ll1 << '6';
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 );
178 ll02 = 0LL;
179 ss.clear();
180 ss.str(empty);
181 ss << ll2 << ' ';
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 );
187 ll02 = 0LL;
188 ss.clear();
189 ss.str(empty);
190 ss << ll2 << '7';
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 );
195 #endif
198 int main()
200 test01();
201 return 0;