Changeset View
Changeset View
Standalone View
Standalone View
src/test/dbwrapper_tests.cpp
Show First 20 Lines • Show All 201 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
BOOST_AUTO_TEST_CASE(iterator_ordering) { | BOOST_AUTO_TEST_CASE(iterator_ordering) { | ||||
fs::path ph = SetDataDir("iterator_ordering"); | fs::path ph = SetDataDir("iterator_ordering"); | ||||
CDBWrapper dbw(ph, (1 << 20), true, false, false); | CDBWrapper dbw(ph, (1 << 20), true, false, false); | ||||
for (int x = 0x00; x < 256; ++x) { | for (int x = 0x00; x < 256; ++x) { | ||||
uint8_t key = x; | uint8_t key = x; | ||||
uint32_t value = x * x; | uint32_t value = x * x; | ||||
if (!(x & 1)) { | |||||
BOOST_CHECK(dbw.Write(key, value)); | BOOST_CHECK(dbw.Write(key, value)); | ||||
} | } | ||||
} | |||||
// Check that creating an iterator creates a snapshot | |||||
std::unique_ptr<CDBIterator> it( | std::unique_ptr<CDBIterator> it( | ||||
const_cast<CDBWrapper &>(dbw).NewIterator()); | const_cast<CDBWrapper &>(dbw).NewIterator()); | ||||
for (int x = 0x00; x < 256; ++x) { | |||||
uint8_t key = x; | |||||
uint32_t value = x * x; | |||||
if (x & 1) { | |||||
BOOST_CHECK(dbw.Write(key, value)); | |||||
} | |||||
} | |||||
for (int seek_start : {0x00, 0x80}) { | for (int seek_start : {0x00, 0x80}) { | ||||
it->Seek((uint8_t)seek_start); | it->Seek((uint8_t)seek_start); | ||||
for (int x = seek_start; x < 256; ++x) { | for (int x = seek_start; x < 255; ++x) { | ||||
uint8_t key; | uint8_t key; | ||||
uint32_t value; | uint32_t value; | ||||
BOOST_CHECK(it->Valid()); | BOOST_CHECK(it->Valid()); | ||||
// Avoid spurious errors about invalid iterator's key and value in | // Avoid spurious errors about invalid iterator's key and value in | ||||
// case of failure | // case of failure | ||||
if (!it->Valid()) break; | if (!it->Valid()) break; | ||||
BOOST_CHECK(it->GetKey(key)); | BOOST_CHECK(it->GetKey(key)); | ||||
if (x & 1) { | |||||
BOOST_CHECK_EQUAL(key, x + 1); | |||||
continue; | |||||
} | |||||
BOOST_CHECK(it->GetValue(value)); | BOOST_CHECK(it->GetValue(value)); | ||||
BOOST_CHECK_EQUAL(key, x); | BOOST_CHECK_EQUAL(key, x); | ||||
BOOST_CHECK_EQUAL(value, x * x); | BOOST_CHECK_EQUAL(value, x * x); | ||||
it->Next(); | it->Next(); | ||||
} | } | ||||
BOOST_CHECK(!it->Valid()); | BOOST_CHECK(!it->Valid()); | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 84 Lines • Show Last 20 Lines |