diff --git a/.gitignore b/.gitignore index fe5c9c4b..90311de0 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ hardfork.hpp build_xc data +build + libraries/utilities/git_revision.cpp libraries/wallet/Doxyfile @@ -43,4 +45,4 @@ object_database/* *.pyo .vscode .DS_Store -.idea \ No newline at end of file +.idea diff --git a/Dockerfile b/Dockerfile index a9ce34fd..8a970e39 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,8 +23,8 @@ RUN \ libssl-dev \ libtool \ locales \ - pkg-config \ ntp \ + pkg-config \ wget \ && \ apt-get clean && \ @@ -34,9 +34,6 @@ RUN \ sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ locale-gen -ADD . /peerplays-core -WORKDIR /peerplays-core - # Compile Boost RUN \ BOOST_ROOT=$HOME/boost_1_67_0 && \ @@ -47,6 +44,9 @@ RUN \ ./b2 install && \ cd .. +ADD . /peerplays-core +WORKDIR /peerplays-core + # Compile Peerplays RUN \ BOOST_ROOT=$HOME/boost_1_67_0 && \ diff --git a/libraries/plugins/witness/witness.cpp b/libraries/plugins/witness/witness.cpp index dce1234a..401a27bd 100644 --- a/libraries/plugins/witness/witness.cpp +++ b/libraries/plugins/witness/witness.cpp @@ -204,7 +204,7 @@ block_production_condition::block_production_condition_enum witness_plugin::bloc break; case block_production_condition::no_private_key: ilog("Not producing block because I don't have the private key for ${scheduled_key}", - ("n", capture["n"])("t", capture["t"])("c", capture["c"])); + ("scheduled_key", capture["scheduled_key"])); break; case block_production_condition::low_participation: elog("Not producing block because node appears to be on a minority fork with only ${pct}% witness participation", diff --git a/tests/betting/betting_tests.cpp b/tests/betting/betting_tests.cpp index 3988c71f..33cc4fad 100644 --- a/tests/betting/betting_tests.cpp +++ b/tests/betting/betting_tests.cpp @@ -49,11 +49,11 @@ struct enable_betting_logging_config { enable_betting_logging_config() - { + { fc::logger::get("betting").add_appender(fc::appender::get("stdout")); fc::logger::get("betting").set_log_level(fc::log_level::debug); } - ~enable_betting_logging_config() { + ~enable_betting_logging_config() { fc::logger::get("betting").remove_appender(fc::appender::get("stdout")); } }; @@ -66,8 +66,8 @@ using namespace graphene::chain::keywords; // While the bets are placed, stored, and sorted using the decimal form of their odds, matching // uses the ratios to ensure no rounding takes place. -// The allowed odds are defined by rules that can be changed at runtime. -// For reference when designing/debugging tests, here is the list of allowed decimal odds and their +// The allowed odds are defined by rules that can be changed at runtime. +// For reference when designing/debugging tests, here is the list of allowed decimal odds and their // corresponding ratios as set in the genesis block. // // decimal ratio | decimal ratio | decimal ratio | decimal ratio | decimal ratio | decimal ratio @@ -129,7 +129,7 @@ using namespace graphene::chain::keywords; // 1.55 20:11 | 2.28 25:32 | 4.3 10:33 | 22 1:21 | 400 1:399 | 980 1:979 // 1.56 25:14 | 2.3 10:13 | 4.4 5:17 | 23 1:22 | 410 1:409 | 990 1:989 // 1.57 100:57 | 2.32 25:33 | 4.5 2:7 | 24 1:23 | 420 1:419 | 1000 1:999 -// 1.58 50:29 | 2.34 50:67 | 4.6 5:18 | 25 1:24 | 430 1:429 | +// 1.58 50:29 | 2.34 50:67 | 4.6 5:18 | 25 1:24 | 430 1:429 | // 1.59 100:59 | 2.36 25:34 | 4.7 10:37 #define CREATE_ICE_HOCKEY_BETTING_MARKET(never_in_play, delay_before_settling) \ @@ -341,7 +341,7 @@ BOOST_AUTO_TEST_CASE(binned_order_books) const auto& bet_odds_idx = db.get_index_type().indices().get(); auto bet_iter = bet_odds_idx.lower_bound(std::make_tuple(capitals_win_market.id)); - while (bet_iter != bet_odds_idx.end() && + while (bet_iter != bet_odds_idx.end() && bet_iter->betting_market_id == capitals_win_market.id) { idump((*bet_iter)); @@ -366,7 +366,7 @@ BOOST_AUTO_TEST_CASE(binned_order_books) } bet_iter = bet_odds_idx.lower_bound(std::make_tuple(capitals_win_market.id)); - while (bet_iter != bet_odds_idx.end() && + while (bet_iter != bet_odds_idx.end() && bet_iter->betting_market_id == capitals_win_market.id) { idump((*bet_iter)); @@ -382,10 +382,10 @@ BOOST_AUTO_TEST_CASE(binned_order_books) // place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(100, asset_id_type()), 165 * GRAPHENE_BETTING_ODDS_PRECISION / 100); // place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(100, asset_id_type()), 165 * GRAPHENE_BETTING_ODDS_PRECISION / 100); // place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(100, asset_id_type()), 165 * GRAPHENE_BETTING_ODDS_PRECISION / 100); -// +// // binned_orders_point_one = bookie_api.get_binned_order_book(capitals_win_market.id, 1); // idump((binned_orders_point_one)); -// +// // // the binned orders returned should be chosen so that we if we assume those orders are real and we place // // matching lay orders, we will completely consume the underlying orders and leave no orders on the books // // @@ -398,20 +398,20 @@ BOOST_AUTO_TEST_CASE(binned_order_books) // share_type back_amount = bet_object::get_approximate_matching_amount(binned_order.amount_to_bet, binned_order.backer_multiplier, bet_type::lay, true /* round up */); // ilog("Alice is backing with ${back_amount} at odds ${odds} to match the binned lay amount ${lay_amount}", ("back_amount", back_amount)("odds", binned_order.backer_multiplier)("lay_amount", binned_order.amount_to_bet)); // place_bet(alice_id, capitals_win_market.id, bet_type::back, asset(back_amount, asset_id_type()), binned_order.backer_multiplier); -// +// // } -// -// +// +// // bet_iter = bet_odds_idx.lower_bound(std::make_tuple(capitals_win_market.id)); -// while (bet_iter != bet_odds_idx.end() && +// while (bet_iter != bet_odds_idx.end() && // bet_iter->betting_market_id == capitals_win_market.id) // { // idump((*bet_iter)); // ++bet_iter; // } -// +// // BOOST_CHECK(bet_odds_idx.lower_bound(std::make_tuple(capitals_win_market.id)) == bet_odds_idx.end()); -// +// } FC_LOG_AND_RETHROW() } @@ -426,9 +426,9 @@ BOOST_AUTO_TEST_CASE( peerplays_sport_create_test ) transfer(account_id_type(), alice_id, asset(10000000)); transfer(account_id_type(), bob_id, asset(10000000)); - // have bob lay a bet for 1M (+20k fees) at 1:1 odds + // have bob lay a bet for 1M (+20k fees) at 1:1 odds place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(1000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); - // have alice back a matching bet at 1:1 odds (also costing 1.02M) + // have alice back a matching bet at 1:1 odds (also costing 1.02M) place_bet(alice_id, capitals_win_market.id, bet_type::back, asset(1000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000); @@ -522,7 +522,7 @@ ilog("message"); BOOST_REQUIRE_EQUAL(get_balance(bob_id, asset_id_type()), bob_expected_balance.value); // now have bob match it with a back of 300 at 1.5 - // This should: + // This should: // match the full 47 @ 1.94 with 50 // match the full 91 @ 1.91 with 100 // bob's balance goes down by 300 (150 is matched, 150 is still on the books) @@ -560,7 +560,7 @@ BOOST_AUTO_TEST_CASE(match_using_takers_expected_amounts2) BOOST_REQUIRE_EQUAL(get_balance(bob_id, asset_id_type()), bob_expected_balance.value); // now have bob match it with a back of 900 at 1.5 - // This should: + // This should: // match all 500 of bob's bet, and leave 400 @ 1.5 on the books // bob's balance goes down by the 900 he paid (500 matched, 400 unmatched) // alice's bet is completely removed from the books. @@ -596,7 +596,7 @@ BOOST_AUTO_TEST_CASE(match_using_takers_expected_amounts3) BOOST_REQUIRE_EQUAL(get_balance(bob_id, asset_id_type()), bob_expected_balance.value); // now have bob match it with a back of 1000 at 1.5 - // This should: + // This should: // match all of the 470 @ 1.94 with 500, and leave 500 left on the books // bob's balance goes down by the 1000 he paid, 500 matching, 500 unmatching // alice's bet is removed from the books @@ -638,18 +638,18 @@ BOOST_AUTO_TEST_CASE(match_using_takers_expected_amounts4) // put another way, bob wants to buy a payout of up to 1807.2289 if the // capitals win, and he is willing to pay up to 3000 to do so. // * The first thing that happens is bob's bet gets rounded down to something - // that can match exactly. 2.66 is 50:83 odds, so bob's bet is + // that can match exactly. 2.66 is 50:83 odds, so bob's bet is // reduced to 2988, which should match against 1800. // So bob gets an immediate refund of 12 // * The next thing that happens is a match against the top bet on the order book. // That's 1000 @ 1.89. We match at those odds (100:89), so bob will fully match - // this bet, paying 890 to get 1000 of his desired win position. + // this bet, paying 890 to get 1000 of his desired win position. // * this top bet is removed from the order books // * bob now has 1000 of the 1800 win position he wants. we adjust his bet - // so that what is left will only match 800. This means we will + // so that what is left will only match 800. This means we will // refund bob 770. His remaining bet is now lay 1328 @ 2.66 // * Now we match the next bet on the order books, which is 1000 @ 1.97 (100:97). - // Bob only wants 800 of 1000 win position being offered, so he will not + // Bob only wants 800 of 1000 win position being offered, so he will not // completely consume this bet. // * Bob pays 776 to get his 800 win position. // * alice's top bet on the books is reduced 200 @ 1.97 @@ -688,9 +688,9 @@ BOOST_AUTO_TEST_CASE(match_using_takers_expected_amounts5) // put another way, bob wants to buy a payout of up to 1122.4 if the // capitals win, and he is willing to pay up to 1100 to do so. // * The first thing that happens is bob's bet gets rounded down to something - // that can match exactly. 1.98 (50:49) odds, so bob's bet is + // that can match exactly. 1.98 (50:49) odds, so bob's bet is // reduced to 1078, which should match against 1100. - // So bob gets an immediate refund of 22 + // So bob gets an immediate refund of 22 // * The next thing that happens is a match against the top bet on the order book. // That's 1100 @ 1.86, At these odds, bob's 980 can buy all 1100 of bet, he // pays 1100:946. @@ -777,7 +777,7 @@ BOOST_AUTO_TEST_CASE(match_using_takers_expected_amounts6) place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(5000000, asset_id_type()), 15 * GRAPHENE_BETTING_ODDS_PRECISION / 10); ilog("Order books after bob's matching lay bet:"); bet_iter = bet_odds_idx.lower_bound(std::make_tuple(capitals_win_market.id)); - while (bet_iter != bet_odds_idx.end() && + while (bet_iter != bet_odds_idx.end() && bet_iter->betting_market_id == capitals_win_market.id) { idump((*bet_iter)); @@ -857,7 +857,7 @@ BOOST_AUTO_TEST_CASE(inexact_odds) BOOST_REQUIRE_EQUAL(get_balance(bob_id, asset_id_type()), bob_expected_balance.value); // now have bob match it with a back of 300 at 1.91 - // This should: + // This should: // match the full 47 @ 1.94 with 50 // match the full 91 @ 1.91 with 100 // leaving 150 @@ -907,28 +907,28 @@ BOOST_AUTO_TEST_CASE(bet_reversal_test) // generate_blocks(1); // ACTORS( (alice)(bob) ); // CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); -// +// // transfer(account_id_type(), alice_id, asset(10000000)); // transfer(account_id_type(), bob_id, asset(10000000)); // int64_t alice_expected_balance = 10000000; // BOOST_REQUIRE_EQUAL(get_balance(alice_id, asset_id_type()), alice_expected_balance); // int64_t bob_expected_balance = 10000000; // BOOST_REQUIRE_EQUAL(get_balance(bob_id, asset_id_type()), bob_expected_balance); -// +// // // back with alice's entire balance // place_bet(alice_id, capitals_win_market.id, bet_type::back, asset(10000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); // alice_expected_balance -= 10000000; // BOOST_REQUIRE_EQUAL(get_balance(alice_id, asset_id_type()), alice_expected_balance); -// +// // // lay with bob's entire balance, which fully matches bob's bet // place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(10000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); // bob_expected_balance -= 10000000; // BOOST_REQUIRE_EQUAL(get_balance(bob_id, asset_id_type()), bob_expected_balance); -// +// // // reverse the bet // place_bet(alice_id, capitals_win_market.id, bet_type::lay, asset(20000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); // BOOST_REQUIRE_EQUAL(get_balance(alice_id, asset_id_type()), alice_expected_balance); -// +// // // try to re-reverse it, but go too far // BOOST_CHECK_THROW( place_bet(alice_id, capitals_win_market.id, bet_type::back, asset(30000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION), fc::exception); // BOOST_REQUIRE_EQUAL(get_balance(alice_id, asset_id_type()), alice_expected_balance); @@ -952,7 +952,7 @@ BOOST_AUTO_TEST_CASE(persistent_objects_test) BOOST_REQUIRE_EQUAL(get_balance(bob_id, asset_id_type()), bob_expected_balance.value); BOOST_REQUIRE_EQUAL(get_balance(alice_id, asset_id_type()), alice_expected_balance.value); - idump((capitals_win_market.get_status())); + idump((capitals_win_market.get_status())); // lay 46 at 1.94 odds (50:47) -- this is too small to be placed on the books and there's // nothing for it to match, so it should be canceled @@ -1049,7 +1049,7 @@ BOOST_AUTO_TEST_CASE(test_settled_market_states) BOOST_REQUIRE_EQUAL(get_balance(bob_id, asset_id_type()), bob_expected_balance.value); BOOST_REQUIRE_EQUAL(get_balance(alice_id, asset_id_type()), alice_expected_balance.value); - idump((capitals_win_market.get_status())); + idump((capitals_win_market.get_status())); BOOST_TEST_MESSAGE("setting the event to in_progress"); update_event(capitals_vs_blackhawks.id, _status = event_status::in_progress); @@ -1091,48 +1091,48 @@ BOOST_AUTO_TEST_CASE(delayed_bets_test) // test live betting try { const auto& bet_odds_idx = db.get_index_type().indices().get(); - + ACTORS( (alice)(bob) ); - + CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); - + generate_blocks(1); - + update_betting_market_group(moneyline_betting_markets.id, _status = betting_market_group_status::in_play); generate_blocks(1); - + transfer(account_id_type(), alice_id, asset(10000000)); transfer(account_id_type(), bob_id, asset(10000000)); share_type alice_expected_balance = 10000000; share_type bob_expected_balance = 10000000; BOOST_REQUIRE_EQUAL(get_balance(bob_id, asset_id_type()), bob_expected_balance.value); BOOST_REQUIRE_EQUAL(get_balance(alice_id, asset_id_type()), alice_expected_balance.value); - + generate_blocks(1); - + BOOST_TEST_MESSAGE("Testing basic delayed bet mechanics"); // alice backs 100 at odds 2 BOOST_TEST_MESSAGE("Alice places a back bet of 100 at odds 2.0"); bet_id_type delayed_back_bet = place_bet(alice_id, capitals_win_market.id, bet_type::back, asset(100, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); generate_blocks(1); - + // verify the bet hasn't been placed in the active book auto first_bet_in_market = bet_odds_idx.lower_bound(std::make_tuple(capitals_win_market.id)); BOOST_CHECK(first_bet_in_market == bet_odds_idx.end()); - + // after 3 blocks, the delay should have expired and it will be promoted to the active book generate_blocks(2); first_bet_in_market = bet_odds_idx.lower_bound(std::make_tuple(capitals_win_market.id)); auto last_bet_in_market = bet_odds_idx.upper_bound(std::make_tuple(capitals_win_market.id)); BOOST_CHECK(first_bet_in_market != bet_odds_idx.end()); BOOST_CHECK(std::distance(first_bet_in_market, last_bet_in_market) == 1); - + for (const auto& bet : boost::make_iterator_range(first_bet_in_market, last_bet_in_market)) edump((bet)); // bob lays 100 at odds 2 to match alice's bet currently on the books BOOST_TEST_MESSAGE("Bob places a lay bet of 100 at odds 2.0"); /* bet_id_type delayed_lay_bet = */ place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(100, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); - + edump((db.get_global_properties().parameters.block_interval)(db.head_block_time())); // the bet should not enter the order books before a block has been generated first_bet_in_market = bet_odds_idx.lower_bound(std::make_tuple(capitals_win_market.id)); @@ -1140,7 +1140,7 @@ BOOST_AUTO_TEST_CASE(delayed_bets_test) // test live betting for (const auto& bet : bet_odds_idx) edump((bet)); generate_blocks(1); - + // bob's bet will still be delayed, so the active order book will only contain alice's bet first_bet_in_market = bet_odds_idx.lower_bound(std::make_tuple(capitals_win_market.id)); last_bet_in_market = bet_odds_idx.upper_bound(std::make_tuple(capitals_win_market.id)); @@ -1148,12 +1148,12 @@ BOOST_AUTO_TEST_CASE(delayed_bets_test) // test live betting BOOST_CHECK(std::distance(first_bet_in_market, last_bet_in_market) == 1); for (const auto& bet : boost::make_iterator_range(first_bet_in_market, last_bet_in_market)) edump((bet)); - + // once bob's bet's delay has expired, the two bets will annihilate each other, leaving // an empty order book generate_blocks(2); BOOST_CHECK(bet_odds_idx.empty()); - + // now test that when we cancel all bets on a market, delayed bets get canceled too BOOST_TEST_MESSAGE("Alice places a back bet of 100 at odds 2.0"); delayed_back_bet = place_bet(alice_id, capitals_win_market.id, bet_type::back, asset(100, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); @@ -1178,7 +1178,7 @@ BOOST_AUTO_TEST_CASE( chained_market_create_test ) { { const flat_set& active_witnesses = db.get_global_properties().active_witnesses; - + BOOST_TEST_MESSAGE("Creating a sport and competitors in the same proposal"); { // operation 0 in the transaction @@ -1239,7 +1239,7 @@ BOOST_AUTO_TEST_CASE( chained_market_create_test ) tx.operations.push_back(proposal_op); set_expiration(db, tx); sign(tx, init_account_priv_key); - + db.push_transaction(tx); } @@ -1311,7 +1311,7 @@ BOOST_AUTO_TEST_CASE( testnet_witness_block_production_error ) BOOST_AUTO_TEST_CASE( cancel_one_event_in_group ) { - // test that creates an event group with two events in it. We walk one event through the + // test that creates an event group with two events in it. We walk one event through the // usual sequence and cancel it, verify that it doesn't alter the other event in the group try { @@ -1446,7 +1446,7 @@ BOOST_AUTO_TEST_SUITE_END() struct simple_bet_test_fixture_2 : database_fixture { betting_market_id_type capitals_win_betting_market_id; - simple_bet_test_fixture_2() + simple_bet_test_fixture_2() { ACTORS( (alice)(bob) ); CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); @@ -1467,7 +1467,7 @@ struct simple_bet_test_fixture_2 : database_fixture { // was already "promised" to her lay bet, so the 500 she would have received is placed in her refundable_unmatched_bets) place_bet(bob_id, capitals_win_market.id, bet_type::back, asset(500, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); - // match another 500, which will fully cancel bob's lay position and return the other 500 he had locked up in his position. + // match another 500, which will fully cancel bob's lay position and return the other 500 he had locked up in his position. // alice's back position is now canceled, 1500 remains of her unmatched lay bet, and the 500 from canceling her position has // been moved to her refundable_unmatched_bets place_bet(bob_id, capitals_win_market.id, bet_type::back, asset(500, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); @@ -1499,15 +1499,15 @@ BOOST_AUTO_TEST_CASE(sport_delete_test) try { CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); - + const auto& event_group_1 = create_event_group({{"en", "group1"}}, ice_hockey.id); const auto& event_group_2 = create_event_group({{"en", "group2"}}, ice_hockey.id); - + delete_sport(ice_hockey.id); - + const auto& sport_by_id = db.get_index_type().indices().get(); BOOST_CHECK(sport_by_id.end() == sport_by_id.find(ice_hockey.id)); - + const auto& event_group_by_id = db.get_index_type().indices().get(); BOOST_CHECK(event_group_by_id.end() == event_group_by_id.find(event_group_1.id)); BOOST_CHECK(event_group_by_id.end() == event_group_by_id.find(event_group_2.id)); @@ -1519,10 +1519,10 @@ BOOST_AUTO_TEST_CASE(sport_delete_test_not_proposal) try { CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); - + sport_delete_operation sport_delete_op; sport_delete_op.sport_id = ice_hockey.id; - + BOOST_CHECK_THROW(force_operation_by_witnesses(sport_delete_op), fc::exception); } FC_LOG_AND_RETHROW() } @@ -1533,9 +1533,9 @@ BOOST_AUTO_TEST_CASE(sport_delete_test_not_proposal) // try // { // CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); -// +// // delete_sport(ice_hockey.id); -// +// // BOOST_CHECK_THROW(delete_sport(ice_hockey.id), fc::exception); // } FC_LOG_AND_RETHROW() // } @@ -1546,26 +1546,26 @@ BOOST_AUTO_TEST_CASE(event_group_update_test) { ACTORS( (alice)(bob) ); CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); - + transfer(account_id_type(), alice_id, asset(10000000)); transfer(account_id_type(), bob_id, asset(10000000)); - + place_bet(alice_id, capitals_win_market.id, bet_type::back, asset(1000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); - + const sport_object& ice_on_hockey = create_sport({{"en", "Hockey on Ice"}, {"zh_Hans", "冰球"}, {"ja", "アイスホッケー"}}); \ fc::optional sport_id = ice_on_hockey.id; - + fc::optional name = internationalized_string_type({{"en", "IBM"}, {"zh_Hans", "國家冰球聯"}, {"ja", "ナショナルホッケーリー"}}); - + update_event_group(nhl.id, fc::optional(), name); update_event_group(nhl.id, sport_id, fc::optional()); update_event_group(nhl.id, sport_id, name); - + place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(1000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); - + BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000); BOOST_CHECK_EQUAL(get_balance(bob_id, asset_id_type()), 10000000 - 1000000); - + update_betting_market_group(moneyline_betting_markets.id, _status = betting_market_group_status::closed); // caps win @@ -1573,14 +1573,14 @@ BOOST_AUTO_TEST_CASE(event_group_update_test) {{capitals_win_market.id, betting_market_resolution_type::win}, {blackhawks_win_market.id, betting_market_resolution_type::not_win}}); generate_blocks(1); - - + + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value = (-1000000 + 2000000) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; BOOST_TEST_MESSAGE("Rake value " + std::to_string(rake_value)); BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000 + 2000000 - rake_value); BOOST_CHECK_EQUAL(get_balance(bob_id, asset_id_type()), 10000000 - 1000000); - + } FC_LOG_AND_RETHROW() } @@ -1602,33 +1602,33 @@ struct test_events { event.on_in_progress_event(db_fixture.db); }); - + event_frozen_upcoming = &db_fixture.create_event({{"en", "event frozen_upcoming"}}, {{"en", "2016-17"}}, event_group_id); db_fixture.db.modify(*event_frozen_upcoming, [&](event_object& event) { event.on_frozen_event(db_fixture.db); }); - + event_frozen_in_progress = &db_fixture.create_event({{"en", "event frozen_in_progress"}}, {{"en", "2016-17"}}, event_group_id); db_fixture.db.modify(*event_frozen_in_progress, [&](event_object& event) { event.on_in_progress_event(db_fixture.db); event.on_frozen_event(db_fixture.db); }); - + event_finished = &db_fixture.create_event({{"en", "event finished"}}, {{"en", "2016-17"}}, event_group_id); db_fixture.db.modify(*event_finished, [&](event_object& event) { event.on_frozen_event(db_fixture.db); event.on_finished_event(db_fixture.db); }); - + event_canceled = &db_fixture.create_event({{"en", "event canceled"}}, {{"en", "2016-17"}}, event_group_id); db_fixture.db.modify(*event_canceled, [&](event_object& event) { event.on_canceled_event(db_fixture.db); }); - + event_settled = &db_fixture.create_event({{"en", "event settled"}}, {{"en", "2016-17"}}, event_group_id); db_fixture.db.modify(*event_settled, [&](event_object& event) { @@ -1648,7 +1648,7 @@ struct test_markets_groups const betting_market_group_object* market_group_graded = nullptr; const betting_market_group_object* market_group_canceled = nullptr; const betting_market_group_object* market_group_settled = nullptr; - + test_markets_groups(database_fixture& db_fixture, event_id_type event_id, betting_market_rules_id_type betting_market_rules_id) { market_group_upcoming = &db_fixture.create_betting_market_group({{"en", "market group upcoming"}}, event_id, betting_market_rules_id, asset_id_type(), false, 0); @@ -1657,39 +1657,39 @@ struct test_markets_groups { market_group.on_frozen_event(db_fixture.db); }); - + market_group_in_play = &db_fixture.create_betting_market_group({{"en", "market group in_play"}}, event_id, betting_market_rules_id, asset_id_type(), false, 0); db_fixture.db.modify(*market_group_in_play, [&](betting_market_group_object& market_group) { market_group.on_in_play_event(db_fixture.db); }); - + market_group_frozen_in_play = &db_fixture.create_betting_market_group({{"en", "market group frozen_in_play"}}, event_id, betting_market_rules_id, asset_id_type(), false, 0); db_fixture.db.modify(*market_group_frozen_in_play, [&](betting_market_group_object& market_group) { market_group.on_in_play_event(db_fixture.db); market_group.on_frozen_event(db_fixture.db); }); - + market_group_closed = &db_fixture.create_betting_market_group({{"en", "market group closed"}}, event_id, betting_market_rules_id, asset_id_type(), false, 0); db_fixture.db.modify(*market_group_closed, [&](betting_market_group_object& market_group) { market_group.on_closed_event(db_fixture.db, true); }); - + market_group_graded = &db_fixture.create_betting_market_group({{"en", "market group graded"}}, event_id, betting_market_rules_id, asset_id_type(), false, 0); db_fixture.db.modify(*market_group_graded, [&](betting_market_group_object& market_group) { market_group.on_closed_event(db_fixture.db, true); market_group.on_graded_event(db_fixture.db); }); - + market_group_canceled = &db_fixture.create_betting_market_group({{"en", "market group canceled"}}, event_id, betting_market_rules_id, asset_id_type(), false, 0); db_fixture.db.modify(*market_group_canceled, [&](betting_market_group_object& market_group) { market_group.on_canceled_event(db_fixture.db, true); }); - + market_group_settled = &db_fixture.create_betting_market_group({{"en", "market group settled"}}, event_id, betting_market_rules_id, asset_id_type(), false, 0); db_fixture.db.modify(*market_group_settled, [&](betting_market_group_object& market_group) { @@ -1708,7 +1708,7 @@ struct test_markets const betting_market_object* market_graded = nullptr; const betting_market_object* market_canceled = nullptr; const betting_market_object* market_settled = nullptr; - + test_markets(database_fixture& db_fixture, betting_market_group_id_type market_group_id) { market_unresolved = &db_fixture.create_betting_market(market_group_id, {{"en", "market unresolved"}}); @@ -1717,26 +1717,26 @@ struct test_markets { market.on_frozen_event(db_fixture.db); }); - + market_closed = &db_fixture.create_betting_market(market_group_id, {{"en", "market closed"}}); db_fixture.db.modify(*market_closed, [&](betting_market_object& market) { market.on_closed_event(db_fixture.db); }); - + market_graded = &db_fixture.create_betting_market(market_group_id, {{"en", "market graded"}}); db_fixture.db.modify(*market_graded, [&](betting_market_object& market) { market.on_closed_event(db_fixture.db); market.on_graded_event(db_fixture.db, betting_market_resolution_type::win); }); - + market_canceled = &db_fixture.create_betting_market(market_group_id, {{"en", "market canceled"}}); db_fixture.db.modify(*market_canceled, [&](betting_market_object& market) { market.on_canceled_event(db_fixture.db); }); - + market_settled = &db_fixture.create_betting_market(market_group_id, {{"en", "market settled"}}); db_fixture.db.modify(*market_settled, [&](betting_market_object& market) { @@ -1753,15 +1753,15 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test) { ACTORS( (alice)(bob) ) CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); - + const int initialAccountAsset = 10000000; const int betAsset = 1000000; - + transfer(account_id_type(), alice_id, asset(initialAccountAsset)); transfer(account_id_type(), bob_id, asset(initialAccountAsset)); - + const auto& event = create_event({{"en", "event"}}, {{"en", "2016-17"}}, nhl.id); - + const auto& market_group = create_betting_market_group({{"en", "market group"}}, event.id, betting_market_rules.id, asset_id_type(), false, 0); //to make bets be not removed immediately update_betting_market_group_impl(market_group.id, @@ -1769,23 +1769,23 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test) fc::optional(), betting_market_group_status::in_play, false); - + const auto& market = create_betting_market(market_group.id, {{"en", "market"}}); - + test_events events(*this, nhl.id); test_markets_groups markets_groups(*this, event.id, betting_market_rules.id); test_markets markets(*this, market_group.id); - + const auto& bet_1_id = place_bet(alice_id, market.id, bet_type::back, asset(betAsset, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); const auto& bet_2_id = place_bet(bob_id, market.id, bet_type::lay, asset(betAsset, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); - + delete_event_group(nhl.id); - + const auto& event_group_by_id = db.get_index_type().indices().get(); BOOST_CHECK(event_group_by_id.end() == event_group_by_id.find(nhl.id)); - + BOOST_CHECK(event_status::canceled == event.get_status()); - + BOOST_CHECK(event_status::canceled == events.event_upcoming->get_status()); BOOST_CHECK(event_status::canceled == events.event_in_progress->get_status()); BOOST_CHECK(event_status::canceled == events.event_frozen_in_progress->get_status()); @@ -1793,9 +1793,9 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test) BOOST_CHECK(event_status::canceled == events.event_finished->get_status()); BOOST_CHECK(event_status::canceled == events.event_canceled->get_status()); BOOST_CHECK(event_status::settled == events.event_settled->get_status()); - + BOOST_CHECK(betting_market_group_status::canceled == market_group.get_status()); - + BOOST_CHECK(betting_market_group_status::canceled == markets_groups.market_group_upcoming->get_status()); BOOST_CHECK(betting_market_group_status::canceled == markets_groups.market_group_frozen_upcoming->get_status()); BOOST_CHECK(betting_market_group_status::canceled == markets_groups.market_group_in_play->get_status()); @@ -1804,21 +1804,21 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test) BOOST_CHECK(betting_market_group_status::canceled == markets_groups.market_group_graded->get_status()); BOOST_CHECK(betting_market_group_status::canceled == markets_groups.market_group_canceled->get_status()); BOOST_CHECK(betting_market_group_status::settled == markets_groups.market_group_settled->get_status()); - + BOOST_CHECK(betting_market_status::canceled == market.get_status()); - + BOOST_CHECK(betting_market_status::canceled == markets.market_unresolved->get_status()); BOOST_CHECK(betting_market_status::canceled == markets.market_frozen->get_status()); BOOST_CHECK(betting_market_status::canceled == markets.market_closed->get_status()); BOOST_CHECK(betting_market_status::canceled == markets.market_graded->get_status()); BOOST_CHECK(betting_market_status::canceled == markets.market_canceled->get_status()); BOOST_CHECK(betting_market_status::settled == markets.market_settled->get_status()); //settled market should not be canceled - + //check canceled bets and reverted balance changes const auto& bet_by_id = db.get_index_type().indices().get(); BOOST_CHECK(bet_by_id.end() == bet_by_id.find(bet_1_id)); BOOST_CHECK(bet_by_id.end() == bet_by_id.find(bet_2_id)); - + BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), initialAccountAsset); BOOST_CHECK_EQUAL(get_balance(bob_id, asset_id_type()), initialAccountAsset); } FC_LOG_AND_RETHROW() @@ -1830,30 +1830,30 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test_with_matched_bets) { ACTORS( (alice)(bob) ) CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); - + const int initialAccountAsset = 10000000; const int betAsset = 100000; - + transfer(account_id_type(), alice_id, asset(initialAccountAsset)); transfer(account_id_type(), bob_id, asset(initialAccountAsset)); generate_blocks(1); - + const auto& event = create_event({{"en", "event"}}, {{"en", "2016-17"}}, nhl.id); generate_blocks(1); - + const auto& market_group = create_betting_market_group({{"en", "market group"}}, event.id, betting_market_rules.id, asset_id_type(), false, 0); generate_blocks(1); - + const auto& market = create_betting_market(market_group.id, {{"en", "market"}}); generate_blocks(1); - + place_bet(alice_id, market.id, bet_type::back, asset(betAsset, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); place_bet(bob_id, market.id, bet_type::lay, asset(betAsset, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); generate_blocks(1); - + delete_event_group(nhl.id); generate_blocks(1); - + BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), initialAccountAsset); BOOST_CHECK_EQUAL(get_balance(bob_id, asset_id_type()), initialAccountAsset); } FC_LOG_AND_RETHROW() @@ -1864,10 +1864,10 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test_not_proposal) try { CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); - + event_group_delete_operation event_group_delete_op; event_group_delete_op.event_group_id = nhl.id; - + BOOST_CHECK_THROW(force_operation_by_witnesses(event_group_delete_op), fc::exception); } FC_LOG_AND_RETHROW() } @@ -1877,9 +1877,9 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test_not_existed_event_group) try { CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); - + delete_event_group(nhl.id); - + BOOST_CHECK_THROW(delete_event_group(nhl.id), fc::exception); } FC_LOG_AND_RETHROW() } @@ -2132,9 +2132,9 @@ BOOST_AUTO_TEST_CASE(event_driven_standard_progression_1_with_delay) // as soon as a block is generated, the betting market group will settle, and the market // and group will cease to exist. The event should transition to "settled", then // removed. - fc::variants objects_from_bookie = bookie_api.get_objects({capitals_vs_blackhawks_id, - moneyline_betting_markets_id, - capitals_win_market_id, + fc::variants objects_from_bookie = bookie_api.get_objects({capitals_vs_blackhawks_id, + moneyline_betting_markets_id, + capitals_win_market_id, blackhawks_win_market_id}); idump((objects_from_bookie)); @@ -2394,7 +2394,7 @@ BOOST_AUTO_TEST_CASE(event_driven_standard_progression_3) fc::variants objects_from_bookie = bookie_api.get_objects({capitals_vs_blackhawks_id}); BOOST_CHECK_EQUAL(objects_from_bookie[0]["status"].as(), "canceled"); - + } FC_LOG_AND_RETHROW() } @@ -2585,7 +2585,7 @@ BOOST_AUTO_TEST_CASE(betting_market_group_driven_standard_progression) BOOST_CHECK(blackhawks_win_market.get_status() == betting_market_status::frozen); BOOST_TEST_MESSAGE("setting the event frozen"); - // this should only change the status of the event, just verify that nothing weird happens when + // this should only change the status of the event, just verify that nothing weird happens when // we try to set the bmg to frozen when it's already frozen update_event(capitals_vs_blackhawks.id, _status = event_status::frozen); generate_blocks(1); @@ -2762,53 +2762,53 @@ BOOST_FIXTURE_TEST_CASE( another_event_group_update_test, database_fixture) { ACTORS( (alice)(bob) ); CREATE_ICE_HOCKEY_BETTING_MARKET(false, 0); - + transfer(account_id_type(), alice_id, asset(10000000)); transfer(account_id_type(), bob_id, asset(10000000)); - + place_bet(alice_id, capitals_win_market.id, bet_type::back, asset(1000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); - + fc::optional name = internationalized_string_type({{"en", "IBM"}, {"zh_Hans", "國家冰球聯"}, {"ja", "ナショナルホッケーリー"}}); - + const sport_object& ice_on_hockey = create_sport({{"en", "Hockey on Ice"}, {"zh_Hans", "冰球"}, {"ja", "アイスホッケー"}}); \ fc::optional sport_id = ice_on_hockey.id; - + update_event_group(nhl.id, fc::optional(), name); update_event_group(nhl.id, sport_id, fc::optional()); update_event_group(nhl.id, sport_id, name); - + //Disabling the below 4 TRY_EXPECT_THROW lines to not throw anything beacuse functioning as expected // trx_state->_is_proposed_trx //GRAPHENE_REQUIRE_THROW(try_update_event_group(nhl.id, fc::optional(), fc::optional(), true), fc::exception); // TRY_EXPECT_THROW(try_update_event_group(nhl.id, fc::optional(), fc::optional(), true), fc::exception, "_is_proposed_trx"); - + // #! nothing to change //GRAPHENE_REQUIRE_THROW(try_update_event_group(nhl.id, fc::optional(), fc::optional()), fc::exception); //TRY_EXPECT_THROW(try_update_event_group(nhl.id, fc::optional(), fc::optional()), fc::exception, "nothing to change"); - + // #! sport_id must refer to a sport_id_type sport_id = capitals_win_market.id; //GRAPHENE_REQUIRE_THROW(try_update_event_group(nhl.id, sport_id, fc::optional()), fc::exception); //TRY_EXPECT_THROW(try_update_event_group(nhl.id, sport_id, fc::optional()), fc::exception, "sport_id must refer to a sport_id_type"); - + // #! invalid sport specified sport_id = sport_id_type(13); //GRAPHENE_REQUIRE_THROW(try_update_event_group(nhl.id, sport_id, fc::optional()), fc::exception); //TRY_EXPECT_THROW(try_update_event_group(nhl.id, sport_id, fc::optional()), fc::exception, "invalid sport specified"); - + place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(1000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION); - + BOOST_CHECK_EQUAL(get_balance(alice_id, asset_id_type()), 10000000 - 1000000); BOOST_CHECK_EQUAL(get_balance(bob_id, asset_id_type()), 10000000 - 1000000); - + update_betting_market_group(moneyline_betting_markets.id, _status = betting_market_group_status::closed); // caps win resolve_betting_market_group(moneyline_betting_markets.id, {{capitals_win_market.id, betting_market_resolution_type::win}, {blackhawks_win_market.id, betting_market_resolution_type::not_win}}); generate_blocks(1); - + uint16_t rake_fee_percentage = db.get_global_properties().parameters.betting_rake_fee_percentage(); uint32_t rake_value = (-1000000 + 2000000) * rake_fee_percentage / GRAPHENE_1_PERCENT / 100; BOOST_TEST_MESSAGE("Rake value " + std::to_string(rake_value)); @@ -2942,9 +2942,9 @@ BOOST_AUTO_TEST_CASE( wimbledon_2017_gentelmen_singles_final_test ) // BOOST_AUTO_TEST_CASE( check_transaction_for_duplicate_reworked_test ) // { // try -// { +// { // std::vector names_vec(104); -// +// // // create 104 pattern for first name // for( char co = 'A'; co <= 'D'; ++co ) { // for( char ci = 'A'; ci <= 'Z'; ++ci ) { @@ -2953,46 +2953,46 @@ BOOST_AUTO_TEST_CASE( wimbledon_2017_gentelmen_singles_final_test ) // names_vec.push_back( {{ first_name, second_name }} ); // } // } -// +// // sport_id_type sport_id = create_sport( {{"SN","SPORT_NAME"}} ).id; -// +// // event_group_id_type event_group_id = create_event_group( {{"EG", "EVENT_GROUP"}}, sport_id ).id; -// -// betting_market_rules_id_type betting_market_rules_id = +// +// betting_market_rules_id_type betting_market_rules_id = // create_betting_market_rules( {{"EN", "Rules"}}, {{"EN", "Some rules"}} ).id; -// +// // for( const auto& name : names_vec ) // { -// proposal_create_operation pcop = proposal_create_operation::committee_proposal( +// proposal_create_operation pcop = proposal_create_operation::committee_proposal( // db.get_global_properties().parameters, -// db.head_block_time() +// db.head_block_time() // ); // pcop.review_period_seconds.reset(); // pcop.review_period_seconds = db.get_global_properties().parameters.committee_proposal_review_period * 2; -// +// // event_create_operation evcop; // evcop.event_group_id = event_group_id; // evcop.name = name; // evcop.season = name; -// +// // betting_market_group_create_operation bmgcop; // bmgcop.description = name; // bmgcop.event_id = object_id_type(relative_protocol_ids, 0, 0); // bmgcop.rules_id = betting_market_rules_id; -// bmgcop.asset_id = asset_id_type(); -// +// bmgcop.asset_id = asset_id_type(); +// // betting_market_create_operation bmcop; // bmcop.group_id = object_id_type(relative_protocol_ids, 0, 1); // bmcop.payout_condition.insert( internationalized_string_type::value_type( "CN", "CONDI_NAME" ) ); -// +// // pcop.proposed_ops.emplace_back( evcop ); // pcop.proposed_ops.emplace_back( bmgcop ); // pcop.proposed_ops.emplace_back( bmcop ); -// +// // signed_transaction trx; // set_expiration( db, trx ); // trx.operations.push_back( pcop ); -// +// // process_operation_by_witnesses( pcop ); // } // }FC_LOG_AND_RETHROW() diff --git a/tests/intense/block_tests.cpp b/tests/intense/block_tests.cpp index 7de6094b..7004f13f 100644 --- a/tests/intense/block_tests.cpp +++ b/tests/intense/block_tests.cpp @@ -73,7 +73,7 @@ BOOST_FIXTURE_TEST_CASE( update_account_keys, database_fixture ) // and assert that all four cases were tested at least once // account_object sam_account_object = create_account( "sam", sam_key ); - + upgrade_to_lifetime_member(sam_account_object.id); //Get a sane head block time generate_block( skip_flags ); diff --git a/tests/tests/fee_tests.cpp b/tests/tests/fee_tests.cpp index b45698c5..96494899 100644 --- a/tests/tests/fee_tests.cpp +++ b/tests/tests/fee_tests.cpp @@ -613,20 +613,20 @@ BOOST_AUTO_TEST_CASE( account_create_fee_scaling ) // try // { // ACTORS((alice)(bob)(izzy)); -// +// // int64_t alice_b0 = 1000000, bob_b0 = 1000000; -// +// // transfer( account_id_type(), alice_id, asset(alice_b0) ); // transfer( account_id_type(), bob_id, asset(bob_b0) ); -// +// // asset_id_type core_id = asset_id_type(); // asset_id_type usd_id = create_user_issued_asset( "IZZYUSD", izzy_id(db), charge_market_fee ).id; // issue_uia( alice_id, asset( alice_b0, usd_id ) ); // issue_uia( bob_id, asset( bob_b0, usd_id ) ); -// +// // int64_t order_create_fee = 537; // int64_t order_cancel_fee = 129; -// +// // uint32_t skip = database::skip_witness_signature // | database::skip_transaction_signatures // | database::skip_transaction_dupe_check @@ -635,9 +635,9 @@ BOOST_AUTO_TEST_CASE( account_create_fee_scaling ) // | database::skip_authority_check // | database::skip_merkle_check // ; -// +// // generate_block( skip ); -// +// // for( int i=0; i<2; i++ ) // { // if( i == 1 ) @@ -645,7 +645,7 @@ BOOST_AUTO_TEST_CASE( account_create_fee_scaling ) // generate_blocks( HARDFORK_445_TIME, true, skip ); // generate_block( skip ); // } -// +// // // enable_fees() and change_fees() modifies DB directly, and results will be overwritten by block generation // // so we have to do it every time we stop generating/popping blocks and start doing tx's // enable_fees(); @@ -671,69 +671,69 @@ BOOST_AUTO_TEST_CASE( account_create_fee_scaling ) // } // change_fees( new_fees ); // } -// +// // // Alice creates order // // Bob creates order which doesn't match -// +// // // AAAAGGHH create_sell_order reads trx.expiration #469 // set_expiration( db, trx ); -// +// // // Check non-overlapping -// +// // limit_order_id_type ao1_id = create_sell_order( alice_id, asset(1000), asset(1000, usd_id) )->id; // limit_order_id_type bo1_id = create_sell_order( bob_id, asset(500, usd_id), asset(1000) )->id; -// +// // BOOST_CHECK_EQUAL( get_balance( alice_id, core_id ), alice_b0 - 1000 - order_create_fee ); // BOOST_CHECK_EQUAL( get_balance( alice_id, usd_id ), alice_b0 ); // BOOST_CHECK_EQUAL( get_balance( bob_id, core_id ), bob_b0 - order_create_fee ); // BOOST_CHECK_EQUAL( get_balance( bob_id, usd_id ), bob_b0 - 500 ); -// +// // // Bob cancels order // cancel_limit_order( bo1_id(db) ); -// +// // int64_t cancel_net_fee; // if( db.head_block_time() >= HARDFORK_445_TIME ) // cancel_net_fee = order_cancel_fee; // else // cancel_net_fee = order_create_fee + order_cancel_fee; -// +// // BOOST_CHECK_EQUAL( get_balance( alice_id, core_id ), alice_b0 - 1000 - order_create_fee ); // BOOST_CHECK_EQUAL( get_balance( alice_id, usd_id ), alice_b0 ); // BOOST_CHECK_EQUAL( get_balance( bob_id, core_id ), bob_b0 - cancel_net_fee ); // BOOST_CHECK_EQUAL( get_balance( bob_id, usd_id ), bob_b0 ); -// +// // // Alice cancels order // cancel_limit_order( ao1_id(db) ); -// +// // BOOST_CHECK_EQUAL( get_balance( alice_id, core_id ), alice_b0 - cancel_net_fee ); // BOOST_CHECK_EQUAL( get_balance( alice_id, usd_id ), alice_b0 ); // BOOST_CHECK_EQUAL( get_balance( bob_id, core_id ), bob_b0 - cancel_net_fee ); // BOOST_CHECK_EQUAL( get_balance( bob_id, usd_id ), bob_b0 ); -// +// // // Check partial fill // const limit_order_object* ao2 = create_sell_order( alice_id, asset(1000), asset(200, usd_id) ); // const limit_order_object* bo2 = create_sell_order( bob_id, asset(100, usd_id), asset(500) ); -// +// // BOOST_CHECK( ao2 != nullptr ); // BOOST_CHECK( bo2 == nullptr ); -// +// // BOOST_CHECK_EQUAL( get_balance( alice_id, core_id ), alice_b0 - cancel_net_fee - order_create_fee - 1000 ); // BOOST_CHECK_EQUAL( get_balance( alice_id, usd_id ), alice_b0 + 100 ); // BOOST_CHECK_EQUAL( get_balance( bob_id, core_id ), bob_b0 - cancel_net_fee - order_create_fee + 500 ); // BOOST_CHECK_EQUAL( get_balance( bob_id, usd_id ), bob_b0 - 100 ); -// +// // // cancel Alice order, show that entire deferred_fee was consumed by partial match // cancel_limit_order( *ao2 ); -// +// // BOOST_CHECK_EQUAL( get_balance( alice_id, core_id ), alice_b0 - cancel_net_fee - order_create_fee - 500 - order_cancel_fee ); // BOOST_CHECK_EQUAL( get_balance( alice_id, usd_id ), alice_b0 + 100 ); // BOOST_CHECK_EQUAL( get_balance( bob_id, core_id ), bob_b0 - cancel_net_fee - order_create_fee + 500 ); // BOOST_CHECK_EQUAL( get_balance( bob_id, usd_id ), bob_b0 - 100 ); -// +// // // TODO: Check multiple fill // // there really should be a test case involving Alice creating multiple orders matched by single Bob order // // but we'll save that for future cleanup -// +// // // undo above tx's and reset // generate_block( skip ); // db.pop_block(); @@ -966,7 +966,7 @@ BOOST_AUTO_TEST_CASE( defaults_test ) fee = schedule.calculate_fee( limit_order_create_operation() ); BOOST_CHECK_EQUAL( new_order_fee.fee, fee.amount.value ); - // NO bid_collateral_operation in this version + // NO bid_collateral_operation in this version // bid_collateral fee defaults to call_order_update fee // call_order_update fee is unset -> default diff --git a/tests/tests/network_broadcast_api_tests.cpp b/tests/tests/network_broadcast_api_tests.cpp index 50fb1715..48165489 100644 --- a/tests/tests/network_broadcast_api_tests.cpp +++ b/tests/tests/network_broadcast_api_tests.cpp @@ -100,7 +100,7 @@ BOOST_AUTO_TEST_CASE( test_exception_throwing_for_the_same_operation_proposed_tw auto trx = make_signed_transaction_with_proposed_operation(*this, {make_transfer_operation(account_id_type(), alice_id, asset(500))}); //Modifying from BOOST_CHECK to BOOST_WARN just to make sure users might confuse about this error. If any changes in network_boradcast, would recommend to revert the changes - BOOST_WARN_THROW(db.check_tansaction_for_duplicated_operations(trx), fc::exception); + BOOST_WARN_THROW(db.check_tansaction_for_duplicated_operations(trx), fc::exception); } catch( const fc::exception& e ) { @@ -195,7 +195,7 @@ BOOST_AUTO_TEST_CASE( check_fails_for_duplicated_operation_in_existed_proposal_w auto trx = make_signed_transaction_with_proposed_operation(*this, {make_transfer_operation(account_id_type(), alice_id, asset(500))}); //duplicated one //Modifying from BOOST_CHECK to BOOST_WARN just to make sure users might confuse about this error. If any changes in network_boradcast, would recommend to revert the changes - BOOST_WARN_THROW(db.check_tansaction_for_duplicated_operations(trx), fc::exception); + BOOST_WARN_THROW(db.check_tansaction_for_duplicated_operations(trx), fc::exception); } catch( const fc::exception& e ) { @@ -230,7 +230,7 @@ BOOST_AUTO_TEST_CASE( check_fails_for_same_member_create_operations ) auto trx = make_signed_transaction_with_proposed_operation(*this, {make_committee_member_create_operation(asset(1000), account_id_type(), "test url")}); //Modifying from BOOST_CHECK to BOOST_WARN just to make sure users might confuse about this error. If any changes in network_boradcast, would recommend to revert the changes - BOOST_WARN_THROW(db.check_tansaction_for_duplicated_operations(trx), fc::exception); + BOOST_WARN_THROW(db.check_tansaction_for_duplicated_operations(trx), fc::exception); } catch( const fc::exception& e ) { @@ -367,9 +367,9 @@ BOOST_AUTO_TEST_CASE( check_passes_for_duplicated_betting_market_or_group ) { const sport_id_type sport_id = create_sport( {{"SN","SPORT_NAME"}} ).id; const event_group_id_type event_group_id = create_event_group( {{"EG", "EVENT_GROUP"}}, sport_id ).id; - const betting_market_rules_id_type betting_market_rules_id = + const betting_market_rules_id_type betting_market_rules_id = create_betting_market_rules( {{"EN", "Rules"}}, {{"EN", "Some rules"}} ).id; - + event_create_operation evcop1; evcop1.event_group_id = event_group_id; evcop1.name = {{"NO", "NAME_ONE"}}; @@ -384,15 +384,15 @@ BOOST_AUTO_TEST_CASE( check_passes_for_duplicated_betting_market_or_group ) bmgcop.description = {{"NN", "NO_NAME"}}; bmgcop.event_id = object_id_type(relative_protocol_ids, 0, 0); bmgcop.rules_id = betting_market_rules_id; - bmgcop.asset_id = asset_id_type(); + bmgcop.asset_id = asset_id_type(); betting_market_create_operation bmcop; bmcop.group_id = object_id_type(relative_protocol_ids, 0, 1); bmcop.payout_condition.insert( internationalized_string_type::value_type( "CN", "CONDI_NAME" ) ); - proposal_create_operation pcop1 = proposal_create_operation::committee_proposal( + proposal_create_operation pcop1 = proposal_create_operation::committee_proposal( db.get_global_properties().parameters, - db.head_block_time() + db.head_block_time() ); pcop1.review_period_seconds.reset(); diff --git a/tests/tests/operation_tests.cpp b/tests/tests/operation_tests.cpp index d6b712ed..443cd011 100644 --- a/tests/tests/operation_tests.cpp +++ b/tests/tests/operation_tests.cpp @@ -1561,6 +1561,7 @@ BOOST_AUTO_TEST_CASE( vesting_balance_create_test ) op.amount = test_asset.amount( 100 ); //op.vesting_seconds = 60*60*24; op.policy = cdd_vesting_policy_initializer{ 60*60*24 }; + //op.balance_type == vesting_balance_type::unspecified; // Fee must be non-negative REQUIRE_OP_VALIDATION_SUCCESS( op, fee, core.amount(1) ); @@ -1580,6 +1581,7 @@ BOOST_AUTO_TEST_CASE( vesting_balance_create_test ) op.creator = alice_account.get_id(); op.owner = alice_account.get_id(); + //op.balance_type = vesting_balance_type::unspecified; account_id_type nobody = account_id_type(1234); @@ -1650,6 +1652,7 @@ BOOST_AUTO_TEST_CASE( vesting_balance_withdraw_test ) create_op.owner = owner; create_op.amount = amount; create_op.policy = cdd_vesting_policy_initializer(vesting_seconds); + //create_op.balance_type = vesting_balance_type::unspecified; tx.operations.push_back( create_op ); set_expiration( db, tx ); diff --git a/tests/tests/operation_tests2.cpp b/tests/tests/operation_tests2.cpp index d6746880..98d40207 100644 --- a/tests/tests/operation_tests2.cpp +++ b/tests/tests/operation_tests2.cpp @@ -869,24 +869,24 @@ BOOST_AUTO_TEST_CASE( burn_worker_test ) // try // { // ACTORS( (nathan)(shorter1)(shorter2)(shorter3)(shorter4)(shorter5) ); -// +// // int64_t initial_balance = 100000000; -// +// // transfer(account_id_type()(db), shorter1_id(db), asset(initial_balance)); // transfer(account_id_type()(db), shorter2_id(db), asset(initial_balance)); // transfer(account_id_type()(db), shorter3_id(db), asset(initial_balance)); // transfer(account_id_type()(db), shorter4_id(db), asset(initial_balance)); // transfer(account_id_type()(db), shorter5_id(db), asset(initial_balance)); -// +// // asset_id_type bitusd_id = create_bitasset( // "USDBIT", // nathan_id, // 100, // disable_force_settle // ).id; -// +// // asset_id_type core_id = asset_id_type(); -// +// // auto update_bitasset_options = [&]( asset_id_type asset_id, // std::function< void(bitasset_options&) > update_function ) // { @@ -901,7 +901,7 @@ BOOST_AUTO_TEST_CASE( burn_worker_test ) // set_expiration( db, tx ); // PUSH_TX( db, tx, ~0 ); // } ; -// +// // auto update_asset_options = [&]( asset_id_type asset_id, // std::function< void(asset_options&) > update_function ) // { @@ -916,36 +916,36 @@ BOOST_AUTO_TEST_CASE( burn_worker_test ) // set_expiration( db, tx ); // PUSH_TX( db, tx, ~0 ); // } ; -// +// // BOOST_TEST_MESSAGE( "Update maximum_force_settlement_volume = 9000" ); -// +// // BOOST_CHECK( bitusd_id(db).is_market_issued() ); // update_bitasset_options( bitusd_id, [&]( bitasset_options& new_options ) // { new_options.maximum_force_settlement_volume = 9000; } ); -// +// // BOOST_TEST_MESSAGE( "Publish price feed" ); -// +// // update_feed_producers( bitusd_id, { nathan_id } ); // { // price_feed feed; // feed.settlement_price = price( asset( 1, bitusd_id ), asset( 1, core_id ) ); // publish_feed( bitusd_id, nathan_id, feed ); // } -// +// // BOOST_TEST_MESSAGE( "First short batch" ); -// +// // call_order_id_type call1_id = borrow( shorter1_id, asset(1000, bitusd_id), asset(2*1000, core_id) )->id; // 2.0000 // call_order_id_type call2_id = borrow( shorter2_id, asset(2000, bitusd_id), asset(2*1999, core_id) )->id; // 1.9990 // call_order_id_type call3_id = borrow( shorter3_id, asset(3000, bitusd_id), asset(2*2890, core_id) )->id; // 1.9267 // call_order_id_type call4_id = borrow( shorter4_id, asset(4000, bitusd_id), asset(2*3950, core_id) )->id; // 1.9750 // call_order_id_type call5_id = borrow( shorter5_id, asset(5000, bitusd_id), asset(2*4900, core_id) )->id; // 1.9600 -// +// // transfer( shorter1_id, nathan_id, asset(1000, bitusd_id) ); // transfer( shorter2_id, nathan_id, asset(2000, bitusd_id) ); // transfer( shorter3_id, nathan_id, asset(3000, bitusd_id) ); // transfer( shorter4_id, nathan_id, asset(4000, bitusd_id) ); // transfer( shorter5_id, nathan_id, asset(5000, bitusd_id) ); -// +// // BOOST_CHECK_EQUAL( get_balance(nathan_id, bitusd_id), 15000); // BOOST_CHECK_EQUAL( get_balance(nathan_id, core_id), 0); // BOOST_CHECK_EQUAL( get_balance(shorter1_id, core_id), initial_balance-2000 ); @@ -953,37 +953,37 @@ BOOST_AUTO_TEST_CASE( burn_worker_test ) // BOOST_CHECK_EQUAL( get_balance(shorter3_id, core_id), initial_balance-5780 ); // BOOST_CHECK_EQUAL( get_balance(shorter4_id, core_id), initial_balance-7900 ); // BOOST_CHECK_EQUAL( get_balance(shorter5_id, core_id), initial_balance-9800 ); -// +// // BOOST_TEST_MESSAGE( "Update force_settlement_delay_sec = 100, force_settlement_offset_percent = 1%" ); -// +// // update_bitasset_options( bitusd_id, [&]( bitasset_options& new_options ) // { new_options.force_settlement_delay_sec = 100; // new_options.force_settlement_offset_percent = GRAPHENE_1_PERCENT; } ); -// +// // // Force settlement is disabled; check that it fails // GRAPHENE_REQUIRE_THROW( force_settle( nathan_id, asset( 50, bitusd_id ) ), fc::exception ); -// +// // update_asset_options( bitusd_id, [&]( asset_options& new_options ) // { new_options.flags &= ~disable_force_settle; } ); -// +// // // Can't settle more BitUSD than you own // GRAPHENE_REQUIRE_THROW( force_settle( nathan_id, asset( 999999, bitusd_id ) ), fc::exception ); -// +// // // settle3 should be least collateralized order according to index // BOOST_CHECK( db.get_index_type().indices().get().begin()->id == call3_id ); // BOOST_CHECK_EQUAL( call3_id(db).debt.value, 3000 ); -// +// // BOOST_TEST_MESSAGE( "Verify partial settlement of call" ); // // Partially settle a call // force_settlement_id_type settle_id = force_settle( nathan_id, asset( 50, bitusd_id ) ).get< object_id_type >(); -// +// // // Call does not take effect immediately // BOOST_CHECK_EQUAL( get_balance(nathan_id, bitusd_id), 14950); // BOOST_CHECK_EQUAL( settle_id(db).balance.amount.value, 50); // BOOST_CHECK_EQUAL( call3_id(db).debt.value, 3000 ); // BOOST_CHECK_EQUAL( call3_id(db).collateral.value, 5780 ); // BOOST_CHECK( settle_id(db).owner == nathan_id ); -// +// // // Wait for settlement to take effect // generate_blocks(settle_id(db).settlement_date); // BOOST_CHECK(db.find(settle_id) == nullptr); @@ -992,56 +992,56 @@ BOOST_AUTO_TEST_CASE( burn_worker_test ) // BOOST_CHECK_EQUAL( get_balance(nathan_id, core_id), 49 ); // 1% force_settlement_offset_percent (rounded unfavorably) // BOOST_CHECK_EQUAL( call3_id(db).debt.value, 2950 ); // BOOST_CHECK_EQUAL( call3_id(db).collateral.value, 5731 ); // 5731 == 5780-49 -// +// // BOOST_CHECK( db.get_index_type().indices().get().begin()->id == call3_id ); -// +// // BOOST_TEST_MESSAGE( "Verify pending settlement is cancelled when asset's force_settle is disabled" ); // // Ensure pending settlement is cancelled when force settle is disabled // settle_id = force_settle( nathan_id, asset( 50, bitusd_id ) ).get< object_id_type >(); -// +// // BOOST_CHECK( !db.get_index_type().indices().empty() ); // update_asset_options( bitusd_id, [&]( asset_options& new_options ) // { new_options.flags |= disable_force_settle; } ); // BOOST_CHECK( db.get_index_type().indices().empty() ); // update_asset_options( bitusd_id, [&]( asset_options& new_options ) // { new_options.flags &= ~disable_force_settle; } ); -// +// // BOOST_TEST_MESSAGE( "Perform iterative settlement" ); // settle_id = force_settle( nathan_id, asset( 12500, bitusd_id ) ).get< object_id_type >(); -// +// // // c3 2950 : 5731 1.9427 fully settled // // c5 5000 : 9800 1.9600 fully settled // // c4 4000 : 7900 1.9750 fully settled // // c2 2000 : 3998 1.9990 550 settled // // c1 1000 : 2000 2.0000 -// +// // generate_blocks( settle_id(db).settlement_date ); -// +// // int64_t call1_payout = 0; // int64_t call2_payout = 550*99/100; // int64_t call3_payout = 49 + 2950*99/100; // int64_t call4_payout = 4000*99/100; // int64_t call5_payout = 5000*99/100; -// +// // BOOST_CHECK_EQUAL( get_balance(shorter1_id, core_id), initial_balance-2*1000 ); // full collat still tied up // BOOST_CHECK_EQUAL( get_balance(shorter2_id, core_id), initial_balance-2*1999 ); // full collat still tied up // BOOST_CHECK_EQUAL( get_balance(shorter3_id, core_id), initial_balance-call3_payout ); // initial balance minus transfer to Nathan (as BitUSD) // BOOST_CHECK_EQUAL( get_balance(shorter4_id, core_id), initial_balance-call4_payout ); // initial balance minus transfer to Nathan (as BitUSD) // BOOST_CHECK_EQUAL( get_balance(shorter5_id, core_id), initial_balance-call5_payout ); // initial balance minus transfer to Nathan (as BitUSD) -// +// // BOOST_CHECK_EQUAL( get_balance(nathan_id, core_id), // call1_payout + call2_payout + call3_payout + call4_payout + call5_payout ); -// +// // BOOST_CHECK( db.find(call3_id) == nullptr ); // BOOST_CHECK( db.find(call4_id) == nullptr ); // BOOST_CHECK( db.find(call5_id) == nullptr ); -// +// // BOOST_REQUIRE( db.find(call1_id) != nullptr ); // BOOST_REQUIRE( db.find(call2_id) != nullptr ); -// +// // BOOST_CHECK_EQUAL( call1_id(db).debt.value, 1000 ); // BOOST_CHECK_EQUAL( call1_id(db).collateral.value, 2000 ); -// +// // BOOST_CHECK_EQUAL( call2_id(db).debt.value, 2000-550 ); // BOOST_CHECK_EQUAL( call2_id(db).collateral.value, 3998-call2_payout ); // } @@ -1051,7 +1051,7 @@ BOOST_AUTO_TEST_CASE( burn_worker_test ) // throw; // } // } -// +// BOOST_AUTO_TEST_CASE( assert_op_test ) { try { @@ -1316,6 +1316,7 @@ BOOST_AUTO_TEST_CASE(zero_second_vbo) create_op.owner = alice_id; create_op.amount = asset(500); create_op.policy = pinit; + //create_op.balance_type = vesting_balance_type::unspecified; signed_transaction create_tx; create_tx.operations.push_back( create_op ); @@ -1399,6 +1400,7 @@ BOOST_AUTO_TEST_CASE( vbo_withdraw_different ) create_op.owner = alice_id; create_op.amount = asset(100, stuff_id); create_op.policy = pinit; + //create_op.balance_type = vesting_balance_type::unspecified; signed_transaction create_tx; create_tx.operations.push_back( create_op );