#319 - voters_info son info as map
This commit is contained in:
parent
7319127142
commit
0d094c2104
3 changed files with 33 additions and 43 deletions
|
|
@ -2376,22 +2376,18 @@ voters_info database_api_impl::get_voters(const string &account_name_or_id) cons
|
|||
|
||||
//! Info for son voters
|
||||
if (son_object) {
|
||||
const auto &son_bitcoin_voters = get_voters_by_id(son_object->get_bitcoin_vote_id());
|
||||
voters_info_object voters_for_bitcoin_son;
|
||||
voters_for_bitcoin_son.vote_id = son_object->get_bitcoin_vote_id();
|
||||
voters_for_bitcoin_son.voters.reserve(son_bitcoin_voters.size());
|
||||
for (const auto &voter : son_bitcoin_voters) {
|
||||
voters_for_bitcoin_son.voters.emplace_back(voter.get_id());
|
||||
flat_map<sidechain_type, voters_info_object> voters_for_son;
|
||||
for (const auto& vote_id : son_object->sidechain_vote_ids) {
|
||||
const auto &son_voters = get_voters_by_id(vote_id.second);
|
||||
voters_info_object voters_for_sidechain_son;
|
||||
voters_for_sidechain_son.vote_id = son_object->get_bitcoin_vote_id();
|
||||
voters_for_sidechain_son.voters.reserve(son_voters.size());
|
||||
for (const auto &voter : son_voters) {
|
||||
voters_for_sidechain_son.voters.emplace_back(voter.get_id());
|
||||
}
|
||||
voters_for_son[vote_id.first] = std::move(voters_for_sidechain_son);
|
||||
}
|
||||
const auto &son_hive_voters = get_voters_by_id(son_object->get_hive_vote_id());
|
||||
voters_info_object voters_for_hive_son;
|
||||
voters_for_hive_son.vote_id = son_object->get_hive_vote_id();
|
||||
voters_for_hive_son.voters.reserve(son_hive_voters.size());
|
||||
for (const auto &voter : son_hive_voters) {
|
||||
voters_for_hive_son.voters.emplace_back(voter.get_id());
|
||||
}
|
||||
result.voters_for_bitcoin_son = std::move(voters_for_bitcoin_son);
|
||||
result.voters_for_hive_son = std::move(voters_for_hive_son);
|
||||
result.voters_for_son = std::move(voters_for_son);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -19,12 +19,11 @@ namespace graphene { namespace chain {
|
|||
* @ingroup object
|
||||
*/
|
||||
struct voters_info {
|
||||
optional<voters_info_object> voters_for_committee_member;
|
||||
optional<voters_info_object> voters_for_witness;
|
||||
optional<vector<voters_info_object> > voters_for_workers;
|
||||
optional<vector<voters_info_object> > voters_against_workers;
|
||||
optional<voters_info_object> voters_for_bitcoin_son;
|
||||
optional<voters_info_object> voters_for_hive_son;
|
||||
optional<voters_info_object> voters_for_committee_member;
|
||||
optional<voters_info_object> voters_for_witness;
|
||||
optional<vector<voters_info_object> > voters_for_workers;
|
||||
optional<vector<voters_info_object> > voters_against_workers;
|
||||
optional<flat_map<sidechain_type, voters_info_object> > voters_for_son;
|
||||
};
|
||||
|
||||
} } // graphene::chain
|
||||
|
|
@ -38,5 +37,4 @@ FC_REFLECT( graphene::chain::voters_info,
|
|||
(voters_for_witness)
|
||||
(voters_for_workers)
|
||||
(voters_against_workers)
|
||||
(voters_for_bitcoin_son)
|
||||
(voters_for_hive_son))
|
||||
(voters_for_son))
|
||||
|
|
@ -257,21 +257,19 @@ BOOST_AUTO_TEST_CASE( son_voting )
|
|||
|
||||
//! Check son1account voters
|
||||
auto voters_for_son1account = con.wallet_api_ptr->get_voters("son1account");
|
||||
BOOST_REQUIRE(voters_for_son1account.voters_for_bitcoin_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_bitcoin_son->voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son1account.voters_for_bitcoin_son->voters[0].instance, nathan_account_object.id.instance());
|
||||
BOOST_REQUIRE(voters_for_son1account.voters_for_hive_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_hive_son->voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son1account.voters_for_hive_son->voters[0].instance, nathan_account_object.id.instance());
|
||||
BOOST_REQUIRE(voters_for_son1account.voters_for_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_son->at(sidechain_type::bitcoin).voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son1account.voters_for_son->at(sidechain_type::bitcoin).voters[0].instance, nathan_account_object.id.instance());
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_son->at(sidechain_type::hive).voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son1account.voters_for_son->at(sidechain_type::hive).voters[0].instance, nathan_account_object.id.instance());
|
||||
|
||||
//! Check son2account voters
|
||||
auto voters_for_son2account = con.wallet_api_ptr->get_voters("son2account");
|
||||
BOOST_REQUIRE(voters_for_son2account.voters_for_bitcoin_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_bitcoin_son->voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son2account.voters_for_bitcoin_son->voters[0].instance, nathan_account_object.id.instance());
|
||||
BOOST_REQUIRE(voters_for_son2account.voters_for_hive_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_hive_son->voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son2account.voters_for_hive_son->voters[0].instance, nathan_account_object.id.instance());
|
||||
BOOST_REQUIRE(voters_for_son2account.voters_for_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_son->at(sidechain_type::bitcoin).voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son2account.voters_for_son->at(sidechain_type::bitcoin).voters[0].instance, nathan_account_object.id.instance());
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_son->at(sidechain_type::hive).voters.size(), 1);
|
||||
BOOST_CHECK_EQUAL((uint32_t)voters_for_son2account.voters_for_son->at(sidechain_type::hive).voters[0].instance, nathan_account_object.id.instance());
|
||||
|
||||
//! Check votes of nathan
|
||||
auto nathan_votes = con.wallet_api_ptr->get_votes("nathan");
|
||||
|
|
@ -296,10 +294,9 @@ BOOST_AUTO_TEST_CASE( son_voting )
|
|||
|
||||
//! Check son1account voters
|
||||
voters_for_son1account = con.wallet_api_ptr->get_voters("son1account");
|
||||
BOOST_REQUIRE(voters_for_son1account.voters_for_bitcoin_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_bitcoin_son->voters.size(), 0);
|
||||
BOOST_REQUIRE(voters_for_son1account.voters_for_hive_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_hive_son->voters.size(), 0);
|
||||
BOOST_REQUIRE(voters_for_son1account.voters_for_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_son->at(sidechain_type::bitcoin).voters.size(), 0);
|
||||
BOOST_CHECK_EQUAL(voters_for_son1account.voters_for_son->at(sidechain_type::hive).voters.size(), 0);
|
||||
|
||||
//! Check votes of nathan
|
||||
nathan_votes = con.wallet_api_ptr->get_votes("nathan");
|
||||
|
|
@ -323,10 +320,9 @@ BOOST_AUTO_TEST_CASE( son_voting )
|
|||
|
||||
//! Check son2account voters
|
||||
voters_for_son2account = con.wallet_api_ptr->get_voters("son2account");
|
||||
BOOST_REQUIRE(voters_for_son2account.voters_for_bitcoin_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_bitcoin_son->voters.size(), 0);
|
||||
BOOST_REQUIRE(voters_for_son2account.voters_for_hive_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_hive_son->voters.size(), 0);
|
||||
BOOST_REQUIRE(voters_for_son2account.voters_for_son);
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_son->at(sidechain_type::bitcoin).voters.size(), 0);
|
||||
BOOST_CHECK_EQUAL(voters_for_son2account.voters_for_son->at(sidechain_type::hive).voters.size(), 0);
|
||||
|
||||
//! Check votes of nathan
|
||||
nathan_votes = con.wallet_api_ptr->get_votes("nathan");
|
||||
|
|
|
|||
Loading…
Reference in a new issue