From e06a69fd193db8d2914f0dcaea604b4886e59cab Mon Sep 17 00:00:00 2001 From: Lee Bousfield Date: Mon, 24 Sep 2018 15:53:23 -0600 Subject: [PATCH] Add a test for bulk_pull_account (#1227) --- rai/core_test/network.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/rai/core_test/network.cpp b/rai/core_test/network.cpp index 04af572e..36d8f7e8 100644 --- a/rai/core_test/network.cpp +++ b/rai/core_test/network.cpp @@ -1079,3 +1079,37 @@ TEST (udp_buffer, stats) buffer.allocate (); ASSERT_EQ (1, stats.count (rai::stat::type::udp, rai::stat::detail::overflow)); } + +TEST (bulk_pull_account, basics) +{ + rai::system system (24000, 1); + system.nodes[0]->config.receive_minimum = rai::uint128_union (20); + rai::keypair key1; + system.wallet (0)->insert_adhoc (rai::test_genesis_key.prv); + system.wallet (0)->insert_adhoc (key1.prv); + auto send1 (system.wallet (0)->send_action (rai::genesis_account, key1.pub, 25)); + auto send2 (system.wallet (0)->send_action (rai::genesis_account, key1.pub, 10)); + auto send3 (system.wallet (0)->send_action (rai::genesis_account, key1.pub, 2)); + system.deadline_set (5s); + while (system.nodes[0]->balance (key1.pub) != 25) + { + ASSERT_NO_ERROR (system.poll ()); + } + auto connection (std::make_shared (nullptr, system.nodes[0])); + std::unique_ptr req (new rai::bulk_pull_account{}); + req->account = key1.pub; + req->minimum_amount = 5; + req->flags = rai::bulk_pull_account_flags (); + connection->requests.push (std::unique_ptr{}); + auto request (std::make_shared (connection, std::move (req))); + ASSERT_FALSE (request->invalid_request); + ASSERT_FALSE (request->pending_include_address); + ASSERT_FALSE (request->pending_address_only); + ASSERT_EQ (request->current_key.account, key1.pub); + ASSERT_EQ (request->current_key.hash, 0); + auto block_data (request->get_next ()); + ASSERT_EQ (send2->hash (), block_data.first.get ()->hash); + ASSERT_EQ (rai::uint128_union (10), block_data.second.get ()->amount); + ASSERT_EQ (rai::genesis_account, block_data.second.get ()->source); + ASSERT_EQ (nullptr, request->get_next ().first.get ()); +}