Test unchecked.multiple_get

This commit is contained in:
SergiySW 2018-09-15 23:39:20 +03:00 committed by clemahieu
commit 92d90ad2c0

View file

@ -276,6 +276,58 @@ TEST (unchecked, double_put)
ASSERT_EQ (block3.size (), 1);
}
TEST (unchecked, multiple_get)
{
bool init (false);
rai::mdb_store store (init, rai::unique_path ());
ASSERT_TRUE (!init);
auto block1 (std::make_shared<rai::send_block> (4, 1, 2, rai::keypair ().prv, 4, 5));
auto block2 (std::make_shared<rai::send_block> (3, 1, 2, rai::keypair ().prv, 4, 5));
auto block3 (std::make_shared<rai::send_block> (5, 1, 2, rai::keypair ().prv, 4, 5));
{
auto transaction (store.tx_begin (true));
store.unchecked_put (transaction, block1->previous (), block1); // unchecked1
store.unchecked_put (transaction, block1->hash (), block1); // unchecked2
store.unchecked_put (transaction, block2->previous (), block2); // unchecked3
store.unchecked_put (transaction, block1->previous (), block2); // unchecked1
store.unchecked_put (transaction, block1->hash (), block2); // unchecked2
store.unchecked_put (transaction, block3->previous (), block3);
store.unchecked_put (transaction, block3->hash (), block3); // unchecked4
store.unchecked_put (transaction, block1->previous (), block3); // unchecked1
}
auto transaction (store.tx_begin ());
auto unchecked_count (store.unchecked_count (transaction));
ASSERT_EQ (unchecked_count, 8);
std::vector<rai::block_hash> unchecked1;
auto unchecked1_blocks (store.unchecked_get (transaction, block1->previous ()));
ASSERT_EQ (unchecked1_blocks.size (), 3);
for (auto & i : unchecked1_blocks)
{
unchecked1.push_back (i->hash ());
}
ASSERT_TRUE (std::find (unchecked1.begin (), unchecked1.end (), block1->hash ()) != unchecked1.end ());
ASSERT_TRUE (std::find (unchecked1.begin (), unchecked1.end (), block2->hash ()) != unchecked1.end ());
ASSERT_TRUE (std::find (unchecked1.begin (), unchecked1.end (), block3->hash ()) != unchecked1.end ());
std::vector<rai::block_hash> unchecked2;
auto unchecked2_blocks (store.unchecked_get (transaction, block1->hash ()));
ASSERT_EQ (unchecked2_blocks.size (), 2);
for (auto & i : unchecked2_blocks)
{
unchecked2.push_back (i->hash ());
}
ASSERT_TRUE (std::find (unchecked2.begin (), unchecked2.end (), block1->hash ()) != unchecked2.end ());
ASSERT_TRUE (std::find (unchecked2.begin (), unchecked2.end (), block2->hash ()) != unchecked2.end ());
auto unchecked3 (store.unchecked_get (transaction, block2->previous ()));
ASSERT_EQ (unchecked3.size (), 1);
ASSERT_EQ (unchecked3[0]->hash (), block2->hash ());
auto unchecked4 (store.unchecked_get (transaction, block3->hash ()));
ASSERT_EQ (unchecked4.size (), 1);
ASSERT_EQ (unchecked4[0]->hash (), block3->hash ());
auto unchecked5 (store.unchecked_get (transaction, block2->hash ()));
ASSERT_EQ (unchecked5.size (), 0);
}
TEST (checksum, simple)
{
bool init (false);