]>
Commit | Line | Data |
---|---|---|
8de6a6df KG |
1 | // 1999-04-12 bkoz |
2 | ||
99dee823 | 3 | // Copyright (C) 1999-2021 Free Software Foundation, Inc. |
8de6a6df KG |
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 | |
748086b7 | 8 | // Free Software Foundation; either version 3, or (at your option) |
8de6a6df KG |
9 | // any later version. |
10 | ||
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. | |
15 | ||
16 | // You should have received a copy of the GNU General Public License along | |
748086b7 JJ |
17 | // with this library; see the file COPYING3. If not see |
18 | // <http://www.gnu.org/licenses/>. | |
8de6a6df KG |
19 | |
20 | // 27.6.1.2.2 arithmetic extractors | |
21 | ||
22 | #include <cstdio> // for printf | |
23 | #include <istream> | |
8de6a6df KG |
24 | #include <sstream> |
25 | #include <locale> | |
26 | #include <testsuite_hooks.h> | |
27 | ||
28 | std::string str_01; | |
29 | std::string str_02("true false 0 1 110001"); | |
30 | std::string str_03("-19999999 777777 -234234 233 -234 33 1 66300.25 .315 1.5"); | |
31 | std::string str_04("0123"); | |
32 | ||
33 | std::stringbuf isbuf_01(std::ios_base::in); | |
34 | std::stringbuf isbuf_02(str_02, std::ios_base::in); | |
35 | std::stringbuf isbuf_03(str_03, std::ios_base::in); | |
36 | std::stringbuf isbuf_04(str_04, std::ios_base::in); | |
37 | ||
8fc81078 | 38 | std::istream is_01(0); |
8de6a6df KG |
39 | std::istream is_02(&isbuf_02); |
40 | std::istream is_03(&isbuf_03); | |
41 | std::istream is_04(&isbuf_04); | |
42 | std::stringstream ss_01(str_01); | |
43 | ||
44 | // minimal sanity check | |
fd0bf20c | 45 | void test01() { |
8de6a6df KG |
46 | |
47 | // Integral Types: | |
48 | bool b1 = false; | |
8de6a6df KG |
49 | short s1 = 0; |
50 | int i1 = 0; | |
51 | long l1 = 0; | |
52 | unsigned short us1 = 0; | |
53 | unsigned int ui1 = 0; | |
54 | unsigned long ul1 = 0; | |
55 | ||
56 | // Floating-point Types: | |
57 | float f1 = 0; | |
58 | double d1 = 0; | |
59 | long double ld1 = 0; | |
60 | ||
61 | // process alphanumeric versions of bool values | |
8de6a6df | 62 | is_02.setf(std::ios_base::boolalpha); |
567d4027 | 63 | is_02.flags(); |
8de6a6df KG |
64 | is_02 >> b1; |
65 | VERIFY( b1 == 1 ); | |
66 | is_02 >> b1; | |
67 | VERIFY( b1 == 0 ); | |
68 | ||
69 | // process numeric versions of of bool values | |
70 | is_02.unsetf(std::ios_base::boolalpha); | |
567d4027 | 71 | is_02.flags(); |
8de6a6df KG |
72 | is_02 >> b1; |
73 | VERIFY( b1 == 0 ); | |
74 | is_02 >> b1; | |
75 | VERIFY( b1 == 1 ); | |
76 | ||
77 | // is_03 == "-19999999 777777 -234234 233 -234 33 1 66300.25 .315 1.5" | |
78 | is_03 >> l1; | |
79 | VERIFY( l1 == -19999999 ); | |
80 | is_03 >> ul1; | |
81 | VERIFY( ul1 == 777777 ); | |
82 | is_03 >> i1; | |
83 | VERIFY( i1 == -234234 ); | |
84 | is_03 >> ui1; | |
85 | VERIFY( ui1 == 233 ); | |
86 | is_03 >> s1; | |
87 | VERIFY( s1 == -234 ); | |
88 | is_03 >> us1; | |
89 | VERIFY( us1 == 33 ); | |
90 | is_03 >> b1; | |
91 | VERIFY( b1 == 1 ); | |
92 | is_03 >> ld1; | |
93 | VERIFY( ld1 == 66300.25 ); | |
94 | is_03 >> d1; | |
95 | VERIFY( d1 == .315 ); | |
96 | is_03 >> f1; | |
97 | VERIFY( f1 == 1.5 ); | |
98 | ||
99 | is_04 >> std::hex >> i1; | |
fd0bf20c | 100 | std::printf ("%d %d\n", i1, i1 == 0x123); |
8de6a6df | 101 | VERIFY( i1 == 0x123 ); |
fd0bf20c | 102 | std::printf ("%d %d\n", i1, i1 == 0x123); |
8de6a6df KG |
103 | |
104 | // test void pointers | |
105 | int i = 55; | |
106 | void* po = &i; | |
107 | void* pi; | |
108 | ||
109 | ss_01 << po; | |
110 | ss_01 >> pi; | |
11f10e6b | 111 | std::printf ("%p %p\n", pi, po); |
8de6a6df | 112 | VERIFY( po == pi ); |
8de6a6df KG |
113 | } |
114 | ||
115 | int main() | |
116 | { | |
117 | test01(); | |
118 | return 0; | |
119 | } |