MCPcopy Create free account
hub / github.com/ElementsProject/elements / TestRandomAccess

Method TestRandomAccess

src/leveldb/table/table_test.cc:484–551  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

482 }
483
484 void TestRandomAccess(Random* rnd, const std::vector<std::string>& keys,
485 const KVMap& data) {
486 static const bool kVerbose = false;
487 Iterator* iter = constructor_->NewIterator();
488 ASSERT_TRUE(!iter->Valid());
489 KVMap::const_iterator model_iter = data.begin();
490 if (kVerbose) fprintf(stderr, "---\n");
491 for (int i = 0; i < 200; i++) {
492 const int toss = rnd->Uniform(5);
493 switch (toss) {
494 case 0: {
495 if (iter->Valid()) {
496 if (kVerbose) fprintf(stderr, "Next\n");
497 iter->Next();
498 ++model_iter;
499 ASSERT_EQ(ToString(data, model_iter), ToString(iter));
500 }
501 break;
502 }
503
504 case 1: {
505 if (kVerbose) fprintf(stderr, "SeekToFirst\n");
506 iter->SeekToFirst();
507 model_iter = data.begin();
508 ASSERT_EQ(ToString(data, model_iter), ToString(iter));
509 break;
510 }
511
512 case 2: {
513 std::string key = PickRandomKey(rnd, keys);
514 model_iter = data.lower_bound(key);
515 if (kVerbose)
516 fprintf(stderr, "Seek '%s'\n", EscapeString(key).c_str());
517 iter->Seek(Slice(key));
518 ASSERT_EQ(ToString(data, model_iter), ToString(iter));
519 break;
520 }
521
522 case 3: {
523 if (iter->Valid()) {
524 if (kVerbose) fprintf(stderr, "Prev\n");
525 iter->Prev();
526 if (model_iter == data.begin()) {
527 model_iter = data.end(); // Wrap around to invalid value
528 } else {
529 --model_iter;
530 }
531 ASSERT_EQ(ToString(data, model_iter), ToString(iter));
532 }
533 break;
534 }
535
536 case 4: {
537 if (kVerbose) fprintf(stderr, "SeekToLast\n");
538 iter->SeekToLast();
539 if (keys.empty()) {
540 model_iter = data.end();
541 } else {

Callers

nothing calls this directly

Calls 15

EscapeStringFunction · 0.85
UniformMethod · 0.80
lower_boundMethod · 0.80
rbeginMethod · 0.80
ToStringFunction · 0.50
SliceClass · 0.50
NewIteratorMethod · 0.45
ValidMethod · 0.45
beginMethod · 0.45
NextMethod · 0.45
SeekToFirstMethod · 0.45
SeekMethod · 0.45

Tested by

no test coverage detected