1
- // Copyright (c) 2015-2022 The Bitcoin Core developers
1
+ // Copyright (c) 2015-present The Bitcoin Core developers
2
2
// Distributed under the MIT software license, see the accompanying
3
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
4
15
15
16
16
BOOST_FIXTURE_TEST_SUITE (prevector_tests, TestingSetup)
17
17
18
- template<unsigned int N, typename T>
19
- class prevector_tester {
18
+ template <unsigned int N, typename T>
19
+ class prevector_tester
20
+ {
20
21
typedef std::vector<T> realtype;
21
22
realtype real_vector;
22
23
realtype real_vector_alt;
@@ -31,36 +32,37 @@ class prevector_tester {
31
32
32
33
33
34
template <typename A, typename B>
34
- void local_check_equal (A a, B b)
35
- {
36
- local_check (a == b);
37
- }
35
+ void local_check_equal (A a, B b)
36
+ {
37
+ local_check (a == b);
38
+ }
38
39
void local_check (bool b)
39
40
{
40
41
passed &= b;
41
42
}
42
- void test () {
43
+ void test ()
44
+ {
43
45
const pretype& const_pre_vector = pre_vector;
44
46
local_check_equal (real_vector.size (), pre_vector.size ());
45
47
local_check_equal (real_vector.empty (), pre_vector.empty ());
46
48
for (Size s = 0 ; s < real_vector.size (); s++) {
47
- local_check (real_vector[s] == pre_vector[s]);
48
- local_check (&(pre_vector[s]) == &(pre_vector.begin ()[s]));
49
- local_check (&(pre_vector[s]) == &*(pre_vector.begin () + s));
50
- local_check (&(pre_vector[s]) == &*((pre_vector.end () + s) - real_vector.size ()));
49
+ local_check (real_vector[s] == pre_vector[s]);
50
+ local_check (&(pre_vector[s]) == &(pre_vector.begin ()[s]));
51
+ local_check (&(pre_vector[s]) == &*(pre_vector.begin () + s));
52
+ local_check (&(pre_vector[s]) == &*((pre_vector.end () + s) - real_vector.size ()));
51
53
}
52
54
// local_check(realtype(pre_vector) == real_vector);
53
55
local_check (pretype (real_vector.begin (), real_vector.end ()) == pre_vector);
54
56
local_check (pretype (pre_vector.begin (), pre_vector.end ()) == pre_vector);
55
57
size_t pos = 0 ;
56
58
for (const T& v : pre_vector) {
57
- local_check (v == real_vector[pos++]);
59
+ local_check (v == real_vector[pos++]);
58
60
}
59
61
for (const T& v : pre_vector | std::views::reverse) {
60
62
local_check (v == real_vector[--pos]);
61
63
}
62
64
for (const T& v : const_pre_vector) {
63
- local_check (v == real_vector[pos++]);
65
+ local_check (v == real_vector[pos++]);
64
66
}
65
67
for (const T& v : const_pre_vector | std::views::reverse) {
66
68
local_check (v == real_vector[--pos]);
@@ -76,90 +78,105 @@ class prevector_tester {
76
78
}
77
79
78
80
public:
79
- void resize (Size s) {
81
+ void resize (Size s)
82
+ {
80
83
real_vector.resize (s);
81
84
local_check_equal (real_vector.size (), s);
82
85
pre_vector.resize (s);
83
86
local_check_equal (pre_vector.size (), s);
84
87
test ();
85
88
}
86
89
87
- void reserve (Size s) {
90
+ void reserve (Size s)
91
+ {
88
92
real_vector.reserve (s);
89
93
local_check (real_vector.capacity () >= s);
90
94
pre_vector.reserve (s);
91
95
local_check (pre_vector.capacity () >= s);
92
96
test ();
93
97
}
94
98
95
- void insert (Size position, const T& value) {
99
+ void insert (Size position, const T& value)
100
+ {
96
101
real_vector.insert (real_vector.begin () + position, value);
97
102
pre_vector.insert (pre_vector.begin () + position, value);
98
103
test ();
99
104
}
100
105
101
- void insert (Size position, Size count, const T& value) {
106
+ void insert (Size position, Size count, const T& value)
107
+ {
102
108
real_vector.insert (real_vector.begin () + position, count, value);
103
109
pre_vector.insert (pre_vector.begin () + position, count, value);
104
110
test ();
105
111
}
106
112
107
- template <typename I>
108
- void insert_range (Size position, I first, I last) {
113
+ template <typename I>
114
+ void insert_range (Size position, I first, I last)
115
+ {
109
116
real_vector.insert (real_vector.begin () + position, first, last);
110
117
pre_vector.insert (pre_vector.begin () + position, first, last);
111
118
test ();
112
119
}
113
120
114
- void erase (Size position) {
121
+ void erase (Size position)
122
+ {
115
123
real_vector.erase (real_vector.begin () + position);
116
124
pre_vector.erase (pre_vector.begin () + position);
117
125
test ();
118
126
}
119
127
120
- void erase (Size first, Size last) {
128
+ void erase (Size first, Size last)
129
+ {
121
130
real_vector.erase (real_vector.begin () + first, real_vector.begin () + last);
122
131
pre_vector.erase (pre_vector.begin () + first, pre_vector.begin () + last);
123
132
test ();
124
133
}
125
134
126
- void update (Size pos, const T& value) {
135
+ void update (Size pos, const T& value)
136
+ {
127
137
real_vector[pos] = value;
128
138
pre_vector[pos] = value;
129
139
test ();
130
140
}
131
141
132
- void push_back (const T& value) {
142
+ void push_back (const T& value)
143
+ {
133
144
real_vector.push_back (value);
134
145
pre_vector.push_back (value);
135
146
test ();
136
147
}
137
148
138
- void pop_back () {
149
+ void pop_back ()
150
+ {
139
151
real_vector.pop_back ();
140
152
pre_vector.pop_back ();
141
153
test ();
142
154
}
143
155
144
- void clear () {
156
+ void clear ()
157
+ {
145
158
real_vector.clear ();
146
159
pre_vector.clear ();
147
160
}
148
161
149
- void assign (Size n, const T& value) {
162
+ void assign (Size n, const T& value)
163
+ {
150
164
real_vector.assign (n, value);
151
165
pre_vector.assign (n, value);
152
166
}
153
167
154
- Size size () const {
168
+ Size size () const
169
+ {
155
170
return real_vector.size ();
156
171
}
157
172
158
- Size capacity () const {
173
+ Size capacity () const
174
+ {
159
175
return pre_vector.capacity ();
160
176
}
161
177
162
- void shrink_to_fit () {
178
+ void shrink_to_fit ()
179
+ {
163
180
pre_vector.shrink_to_fit ();
164
181
test ();
165
182
}
@@ -171,19 +188,22 @@ class prevector_tester {
171
188
test ();
172
189
}
173
190
174
- void move () {
191
+ void move ()
192
+ {
175
193
real_vector = std::move (real_vector_alt);
176
194
real_vector_alt.clear ();
177
195
pre_vector = std::move (pre_vector_alt);
178
196
pre_vector_alt.clear ();
179
197
}
180
198
181
- void copy () {
199
+ void copy ()
200
+ {
182
201
real_vector = real_vector_alt;
183
202
pre_vector = pre_vector_alt;
184
203
}
185
204
186
- void resize_uninitialized (realtype values) {
205
+ void resize_uninitialized (realtype values)
206
+ {
187
207
size_t r = values.size ();
188
208
size_t s = real_vector.size () / 2 ;
189
209
if (real_vector.capacity () < s + r) {
@@ -203,11 +223,13 @@ class prevector_tester {
203
223
test ();
204
224
}
205
225
206
- ~prevector_tester () {
226
+ ~prevector_tester ()
227
+ {
207
228
BOOST_CHECK_MESSAGE (passed, " insecure_rand: " + rand_seed.ToString ());
208
229
}
209
230
210
- prevector_tester (FastRandomContext& rng) {
231
+ prevector_tester (FastRandomContext& rng)
232
+ {
211
233
rand_seed = rng.rand256 ();
212
234
rng.Reseed (rand_seed);
213
235
}
0 commit comments