diff --git a/src/test/dbwrapper_tests.cpp b/src/test/dbwrapper_tests.cpp --- a/src/test/dbwrapper_tests.cpp +++ b/src/test/dbwrapper_tests.cpp @@ -207,14 +207,22 @@ for (int x = 0x00; x < 256; ++x) { uint8_t key = x; uint32_t value = x * x; - BOOST_CHECK(dbw.Write(key, value)); + if (!(x & 1)) BOOST_CHECK(dbw.Write(key, value)); } + // Check that creating an iterator creates a snapshot std::unique_ptr it( const_cast(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}) { 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; uint32_t value; BOOST_CHECK(it->Valid()); @@ -222,6 +230,10 @@ // case of failure if (!it->Valid()) break; BOOST_CHECK(it->GetKey(key)); + if (x & 1) { + BOOST_CHECK_EQUAL(key, x + 1); + continue; + } BOOST_CHECK(it->GetValue(value)); BOOST_CHECK_EQUAL(key, x); BOOST_CHECK_EQUAL(value, x * x);