Fix lastLeq bug
This commit is contained in:
26
Internal.h
26
Internal.h
@@ -7,6 +7,7 @@
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <inttypes.h>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <span>
|
||||
@@ -14,7 +15,7 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#define DEBUG_VERBOSE 1
|
||||
#define DEBUG_VERBOSE 0
|
||||
|
||||
// This header contains code that we want to reuse outside of ConflictSet.cpp or
|
||||
// want to exclude from coverage since it's only testing related.
|
||||
@@ -451,6 +452,19 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
|
||||
constexpr static auto kMaxKeyLen = 24;
|
||||
|
||||
bool ok = true;
|
||||
|
||||
static const char *resultToStr(ConflictSet::Result r) {
|
||||
switch (r) {
|
||||
case ConflictSet::Commit:
|
||||
return "commit";
|
||||
case ConflictSet::Conflict:
|
||||
return "conflict";
|
||||
case ConflictSet::TooOld:
|
||||
return "too old";
|
||||
}
|
||||
}
|
||||
|
||||
// Call until it returns true, for "done". Check internal invariants etc
|
||||
// between calls to next.
|
||||
bool next() {
|
||||
@@ -537,10 +551,12 @@ template <class ConflictSetImpl> struct TestDriver {
|
||||
refImpl.check(reads, results2, numReads);
|
||||
for (int i = 0; i < numReads; ++i) {
|
||||
if (results1[i] != results2[i]) {
|
||||
fprintf(stderr, "Expected %d, got %d for read of %s at version %d\n",
|
||||
results2[i], results1[i], printable(reads[i].begin).c_str(),
|
||||
int(reads[i].readVersion));
|
||||
abort();
|
||||
fprintf(stderr,
|
||||
"Expected %s, got %s for read of %s at version %" PRId64 "\n",
|
||||
resultToStr(results2[i]), resultToStr(results1[i]),
|
||||
printable(reads[i].begin).c_str(), reads[i].readVersion);
|
||||
ok = false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user