mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-06 14:19:59 -05:00
Assert immediately rather than caching failure
This commit is contained in:
parent
55608455cb
commit
eda8309bfc
1 changed files with 23 additions and 34 deletions
|
@ -25,68 +25,61 @@ class prevector_tester {
|
||||||
pretype pre_vector_alt;
|
pretype pre_vector_alt;
|
||||||
|
|
||||||
typedef typename pretype::size_type Size;
|
typedef typename pretype::size_type Size;
|
||||||
bool passed = true;
|
|
||||||
|
|
||||||
template <typename A, typename B>
|
|
||||||
void local_check_equal(A a, B b)
|
|
||||||
{
|
|
||||||
local_check(a == b);
|
|
||||||
}
|
|
||||||
|
|
||||||
void local_check(bool b)
|
|
||||||
{
|
|
||||||
passed &= b;
|
|
||||||
}
|
|
||||||
void test() {
|
void test() {
|
||||||
const pretype& const_pre_vector = pre_vector;
|
const pretype& const_pre_vector = pre_vector;
|
||||||
local_check_equal(real_vector.size(), pre_vector.size());
|
assert(real_vector.size() == pre_vector.size());
|
||||||
local_check_equal(real_vector.empty(), pre_vector.empty());
|
assert(real_vector.empty() == pre_vector.empty());
|
||||||
for (Size s = 0; s < real_vector.size(); s++) {
|
for (Size s = 0; s < real_vector.size(); s++) {
|
||||||
local_check(real_vector[s] == pre_vector[s]);
|
assert(real_vector[s] == pre_vector[s]);
|
||||||
local_check(&(pre_vector[s]) == &(pre_vector.begin()[s]));
|
assert(&(pre_vector[s]) == &(pre_vector.begin()[s]));
|
||||||
local_check(&(pre_vector[s]) == &*(pre_vector.begin() + s));
|
assert(&(pre_vector[s]) == &*(pre_vector.begin() + s));
|
||||||
local_check(&(pre_vector[s]) == &*((pre_vector.end() + s) - real_vector.size()));
|
assert(&(pre_vector[s]) == &*((pre_vector.end() + s) - real_vector.size()));
|
||||||
}
|
}
|
||||||
// local_check(realtype(pre_vector) == real_vector);
|
// assert(realtype(pre_vector) == real_vector);
|
||||||
local_check(pretype(real_vector.begin(), real_vector.end()) == pre_vector);
|
assert(pretype(real_vector.begin(), real_vector.end()) == pre_vector);
|
||||||
local_check(pretype(pre_vector.begin(), pre_vector.end()) == pre_vector);
|
assert(pretype(pre_vector.begin(), pre_vector.end()) == pre_vector);
|
||||||
size_t pos = 0;
|
size_t pos = 0;
|
||||||
for (const T& v : pre_vector) {
|
for (const T& v : pre_vector) {
|
||||||
local_check(v == real_vector[pos++]);
|
assert(v == real_vector[pos]);
|
||||||
|
++pos;
|
||||||
}
|
}
|
||||||
for (const T& v : reverse_iterate(pre_vector)) {
|
for (const T& v : reverse_iterate(pre_vector)) {
|
||||||
local_check(v == real_vector[--pos]);
|
--pos;
|
||||||
|
assert(v == real_vector[pos]);
|
||||||
}
|
}
|
||||||
for (const T& v : const_pre_vector) {
|
for (const T& v : const_pre_vector) {
|
||||||
local_check(v == real_vector[pos++]);
|
assert(v == real_vector[pos]);
|
||||||
|
++pos;
|
||||||
}
|
}
|
||||||
for (const T& v : reverse_iterate(const_pre_vector)) {
|
for (const T& v : reverse_iterate(const_pre_vector)) {
|
||||||
local_check(v == real_vector[--pos]);
|
--pos;
|
||||||
|
assert(v == real_vector[pos]);
|
||||||
}
|
}
|
||||||
CDataStream ss1(SER_DISK, 0);
|
CDataStream ss1(SER_DISK, 0);
|
||||||
CDataStream ss2(SER_DISK, 0);
|
CDataStream ss2(SER_DISK, 0);
|
||||||
ss1 << real_vector;
|
ss1 << real_vector;
|
||||||
ss2 << pre_vector;
|
ss2 << pre_vector;
|
||||||
local_check_equal(ss1.size(), ss2.size());
|
assert(ss1.size() == ss2.size());
|
||||||
for (Size s = 0; s < ss1.size(); s++) {
|
for (Size s = 0; s < ss1.size(); s++) {
|
||||||
local_check_equal(ss1[s], ss2[s]);
|
assert(ss1[s] == ss2[s]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void resize(Size s) {
|
void resize(Size s) {
|
||||||
real_vector.resize(s);
|
real_vector.resize(s);
|
||||||
local_check_equal(real_vector.size(), s);
|
assert(real_vector.size() == s);
|
||||||
pre_vector.resize(s);
|
pre_vector.resize(s);
|
||||||
local_check_equal(pre_vector.size(), s);
|
assert(pre_vector.size() == s);
|
||||||
test();
|
test();
|
||||||
}
|
}
|
||||||
|
|
||||||
void reserve(Size s) {
|
void reserve(Size s) {
|
||||||
real_vector.reserve(s);
|
real_vector.reserve(s);
|
||||||
local_check(real_vector.capacity() >= s);
|
assert(real_vector.capacity() >= s);
|
||||||
pre_vector.reserve(s);
|
pre_vector.reserve(s);
|
||||||
local_check(pre_vector.capacity() >= s);
|
assert(pre_vector.capacity() >= s);
|
||||||
test();
|
test();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,10 +192,6 @@ public:
|
||||||
}
|
}
|
||||||
test();
|
test();
|
||||||
}
|
}
|
||||||
|
|
||||||
~prevector_tester() {
|
|
||||||
assert(passed);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue