]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
1 // If you modify this, please update simple11.cc and debug.cc as well.
4 // { dg-options "-g -O0 -std=gnu++98" }
6 // Copyright (C) 2011-2024 Free Software Foundation, Inc.
8 // This file is part of the GNU ISO C++ Library. This library is free
9 // software; you can redistribute it and/or modify it under the
10 // terms of the GNU General Public License as published by the
11 // Free Software Foundation; either version 3, or (at your option)
14 // This library is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 // GNU General Public License for more details.
19 // You should have received a copy of the GNU General Public License along
20 // with this library; see the file COPYING3. If not see
21 // <http://www.gnu.org/licenses/>.
38 std::string str
= "zardoz";
39 // { dg-final { note-test str "\"zardoz\"" } }
43 // { dg-final { regexp-test bs0 {std::(__debug::)?bitset} } }
49 // { dg-final { regexp-test bs {std::(__debug::)?bitset = {\[0\] = 1, \[5\] = 1, \[7\] = 1}} } }
51 std::deque
<std::string
> deq
;
54 // { dg-final { regexp-test deq {std::(__debug::)?deque with 2 elements = {"one", "two"}} } }
56 std::deque
<int>::iterator deqiter0
;
57 // { dg-final { note-test deqiter0 {non-dereferenceable iterator for std::deque} } }
59 std::deque
<std::string
>::iterator deqiter
= deq
.begin();
60 // { dg-final { note-test deqiter {"one"} } }
62 std::list
<std::string
> lst
;
65 // { dg-final { regexp-test lst {std::(__cxx11::)?(__debug::)?list = {\[0\] = "one", \[1\] = "two"}} } }
67 std::list
<int>::iterator lstiter0
;
68 // { dg-final { note-test lstiter0 {non-dereferenceable iterator for std::list} } }
70 std::list
<std::string
>::iterator lstiter
= lst
.begin();
72 // { dg-final { note-test lstiter {"one"}} }
74 std::list
<std::string
>::const_iterator lstciter
= lst
.begin();
76 // { dg-final { note-test lstciter {"one"}} }
78 std::map
<std::string
, int> mp
;
80 // { dg-final { regexp-test mp {std::(__debug::)?map with 1 element = {\["zardoz"\] = 23}} } }
82 std::map
<std::string
, int>::iterator mpiter
= mp
.begin();
83 // { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
85 std::map
<std::string
, int>::iterator mpiter0
;
86 // { dg-final { note-test mpiter0 {non-dereferenceable iterator for associative container} } }
92 const std::set
<int> const_intset
= intset
;
93 // { dg-final { regexp-test const_intset {std::(__debug::)?set with 2 elements = {\[0\] = 2, \[1\] = 3}} } }
95 std::set
<std::string
> sp
;
96 sp
.insert("clownfish");
98 // { dg-final { regexp-test sp {std::(__debug::)?set with 2 elements = {\[0\] = "barrel", \[1\] = "clownfish"}} } }
100 std::set
<std::string
>::const_iterator spciter
= sp
.begin();
101 // { dg-final { note-test spciter {"barrel"} } }
103 std::set
<int>::iterator spiter0
;
104 // { dg-final { note-test spiter0 {non-dereferenceable iterator for associative container} } }
110 // { dg-final { regexp-test v {std::(__debug::)?vector of length 1, capacity 2 = \\{2\\}} } }
111 std::vector
<int>::iterator viter3
= v
.begin();
112 // { dg-final { note-test viter3 {2} } }
114 std::vector
<int>::iterator viter0
;
115 // { dg-final { note-test viter0 {non-dereferenceable iterator for std::vector} } }
117 std::vector
<bool> vb
;
125 vb
.erase(vb
.begin());
126 // { dg-final { regexp-test vb {std::(__debug::)?vector<bool> of length 5, capacity 128 = \\{true, true, false, false, true\\}} } }
128 std::vector
<bool>::iterator vbIt
= vb
.begin();
129 // { dg-final { note-test vbIt {true} } }
130 std::vector
<bool>::iterator vbIt2
= ++vbIt
;
131 // { dg-final { note-test vbIt2 {true} } }
132 std::vector
<bool>::iterator vbIt3
= ++vbIt
;
133 // { dg-final { note-test vbIt3 {false} } }
134 std::vector
<bool>::iterator vbIt4
= ++vbIt
;
135 // { dg-final { note-test vbIt4 {false} } }
136 std::vector
<bool>::iterator vbIt5
= ++vbIt
;
137 // { dg-final { note-test vbIt5 {true} } }
139 std::vector
<bool>::const_iterator vbcIt
= vb
.begin();
140 // { dg-final { note-test vbcIt {true} } }
142 std::vector
<bool>::iterator vbIt0
;
143 // { dg-final { note-test vbIt0 {non-dereferenceable iterator for std::vector<bool>} } }
145 std::vector
<bool>::reference br
= *vb
.begin();
146 // { dg-final { note-test br {true} } }
147 std::vector
<bool>::reference br2
= *vbIt2
;
148 // { dg-final { note-test br2 {true} } }
149 std::vector
<bool>::reference br3
= *vbIt3
;
150 // { dg-final { note-test br3 {false} } }
151 std::vector
<bool>::reference br4
= *vbIt4
;
152 // { dg-final { note-test br4 {false} } }
153 std::vector
<bool>::reference br5
= *vbIt5
;
154 // { dg-final { note-test br5 {true} } }
156 std::vector
<bool>::reference br0
;
157 // { dg-final { note-test br0 {invalid std::vector<bool>::reference} } }
159 __gnu_cxx::slist
<int> sll
;
162 // { dg-final { note-test sll {__gnu_cxx::slist = {[0] = 47, [1] = 23}} } }
164 __gnu_cxx::slist
<int>::iterator slliter
= sll
.begin();
165 // { dg-final { note-test slliter {47} } }
167 __gnu_cxx::slist
<int>::iterator slliter0
;
168 // { dg-final { note-test slliter0 {non-dereferenceable iterator for __gnu_cxx::slist} } }
170 std::stringstream sstream
;
172 // { dg-final { note-test sstream "\"abc\"" } }
173 std::stringstream
ssin("input", std::ios::in
);
174 // { dg-final { note-test ssin "\"input\"" } }
175 std::istringstream
ssin2("input");
176 // { dg-final { note-test ssin2 "\"input\"" } }
177 std::ostringstream ssout
;
179 // { dg-final { note-test ssout "\"out\"" } }
180 std::stringstream
redirected("xxx");
181 static_cast<std::basic_ios
<std::stringstream::char_type
>&>(redirected
).rdbuf(sstream
.rdbuf());
182 // { dg-final { regexp-test redirected {std::.*stringstream redirected to .*} } }
185 return 0; // Mark SPOT
188 // { dg-final { gdb-test SPOT } }