block_tests.cpp: Remove redundant, unimplemented force_settlement test
This commit is contained in:
parent
f06a5dccda
commit
d827c5df28
1 changed files with 0 additions and 132 deletions
|
|
@ -710,138 +710,6 @@ BOOST_FIXTURE_TEST_CASE( change_block_interval, database_fixture )
|
|||
BOOST_CHECK_EQUAL(db.head_block_time().sec_since_epoch() - past_time, 2);
|
||||
} FC_LOG_AND_RETHROW() }
|
||||
|
||||
BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( unimp_force_settlement, 1 )
|
||||
BOOST_FIXTURE_TEST_CASE( unimp_force_settlement, database_fixture )
|
||||
{
|
||||
BOOST_FAIL( "TODO" );
|
||||
/*
|
||||
try {
|
||||
auto private_key = init_account_priv_key;
|
||||
auto private_key = generate_private_key("committee");
|
||||
>>>>>>> short_refactor
|
||||
account_id_type nathan_id = create_account("nathan").get_id();
|
||||
account_id_type shorter1_id = create_account("shorter1").get_id();
|
||||
account_id_type shorter2_id = create_account("shorter2").get_id();
|
||||
account_id_type shorter3_id = create_account("shorter3").get_id();
|
||||
transfer(account_id_type()(db), nathan_id(db), asset(100000000));
|
||||
transfer(account_id_type()(db), shorter1_id(db), asset(100000000));
|
||||
transfer(account_id_type()(db), shorter2_id(db), asset(100000000));
|
||||
transfer(account_id_type()(db), shorter3_id(db), asset(100000000));
|
||||
asset_id_type bit_usd = create_bitasset("BITUSD", GRAPHENE_TEMP_ACCOUNT, 0).get_id();
|
||||
{
|
||||
asset_update_bitasset_operation op;
|
||||
op.asset_to_update = bit_usd;
|
||||
op.issuer = bit_usd(db).issuer;
|
||||
op.new_options = bit_usd(db).bitasset_data(db).options;
|
||||
op.new_options.maximum_force_settlement_volume = 9000;
|
||||
trx.clear();
|
||||
trx.operations.push_back(op);
|
||||
PUSH_TX( db, trx, ~0 );
|
||||
trx.clear();
|
||||
}
|
||||
generate_block();
|
||||
|
||||
create_short(shorter1_id(db), asset(1000, bit_usd), asset(1000));
|
||||
create_sell_order(nathan_id(db), asset(1000), asset(1000, bit_usd));
|
||||
create_short(shorter2_id(db), asset(2000, bit_usd), asset(1999));
|
||||
create_sell_order(nathan_id(db), asset(1999), asset(2000, bit_usd));
|
||||
create_short(shorter3_id(db), asset(3000, bit_usd), asset(2990));
|
||||
create_sell_order(nathan_id(db), asset(2990), asset(3000, bit_usd));
|
||||
BOOST_CHECK_EQUAL(get_balance(nathan_id, bit_usd), 6000);
|
||||
|
||||
transfer(nathan_id(db), account_id_type()(db), db.get_balance(nathan_id, asset_id_type()));
|
||||
|
||||
{
|
||||
asset_update_bitasset_operation uop;
|
||||
uop.issuer = bit_usd(db).issuer;
|
||||
uop.asset_to_update = bit_usd;
|
||||
uop.new_options = bit_usd(db).bitasset_data(db).options;
|
||||
uop.new_options.force_settlement_delay_sec = 100;
|
||||
uop.new_options.force_settlement_offset_percent = 100;
|
||||
trx.operations.push_back(uop);
|
||||
} {
|
||||
asset_update_feed_producers_operation uop;
|
||||
uop.asset_to_update = bit_usd;
|
||||
uop.issuer = bit_usd(db).issuer;
|
||||
uop.new_feed_producers = {nathan_id};
|
||||
trx.operations.push_back(uop);
|
||||
} {
|
||||
asset_publish_feed_operation pop;
|
||||
pop.asset_id = bit_usd;
|
||||
pop.publisher = nathan_id;
|
||||
price_feed feed;
|
||||
feed.settlement_price = price(asset(1),asset(1, bit_usd));
|
||||
feed.call_limit = price::min(0, bit_usd);
|
||||
feed.short_limit = price::min(bit_usd, 0);
|
||||
pop.feed = feed;
|
||||
trx.operations.push_back(pop);
|
||||
}
|
||||
trx.sign(key_id_type(),private_key);
|
||||
PUSH_TX( db, trx );
|
||||
trx.clear();
|
||||
|
||||
asset_settle_operation sop;
|
||||
sop.account = nathan_id;
|
||||
sop.amount = asset(50, bit_usd);
|
||||
trx.operations.push_back(sop);
|
||||
REQUIRE_THROW_WITH_VALUE(sop, amount, asset(999999, bit_usd));
|
||||
trx.operations.back() = sop;
|
||||
trx.sign(key_id_type(),private_key);
|
||||
|
||||
//Partially settle a call
|
||||
force_settlement_id_type settle_id = PUSH_TX( db, trx ).operation_results.front().get<object_id_type>();
|
||||
trx.clear();
|
||||
call_order_id_type call_id = db.get_index_type<call_order_index>().indices().get<by_collateral>().begin()->id;
|
||||
BOOST_CHECK_EQUAL(settle_id(db).balance.amount.value, 50);
|
||||
BOOST_CHECK_EQUAL(call_id(db).debt.value, 3000);
|
||||
BOOST_CHECK(settle_id(db).owner == nathan_id);
|
||||
|
||||
generate_blocks(settle_id(db).settlement_date);
|
||||
BOOST_CHECK(db.find(settle_id) == nullptr);
|
||||
BOOST_CHECK_EQUAL(get_balance(nathan_id, asset_id_type()), 49);
|
||||
BOOST_CHECK_EQUAL(call_id(db).debt.value, 2950);
|
||||
|
||||
//Exactly settle a call
|
||||
call_id = db.get_index_type<call_order_index>().indices().get<by_collateral>().begin()->id;
|
||||
sop.amount.amount = 2000;
|
||||
trx.operations.push_back(sop);
|
||||
trx.sign(key_id_type(),private_key);
|
||||
//Trx has expired by now. Make sure it throws.
|
||||
GRAPHENE_CHECK_THROW(settle_id = PUSH_TX( db, trx ).operation_results.front().get<object_id_type>(), fc::exception);
|
||||
trx.set_expiration(db.head_block_time() + fc::minutes(1));
|
||||
trx.sign(key_id_type(),private_key);
|
||||
settle_id = PUSH_TX( db, trx ).operation_results.front().get<object_id_type>();
|
||||
trx.clear();
|
||||
|
||||
generate_blocks(settle_id(db).settlement_date);
|
||||
BOOST_CHECK(db.find(settle_id) == nullptr);
|
||||
BOOST_CHECK_EQUAL(get_balance(nathan_id, asset_id_type()), 2029);
|
||||
BOOST_CHECK(db.find(call_id) == nullptr);
|
||||
trx.set_expiration(db.head_block_time() + fc::minutes(1));
|
||||
|
||||
//Attempt to settle all existing asset
|
||||
sop.amount = db.get_balance(nathan_id, bit_usd);
|
||||
trx.operations.push_back(sop);
|
||||
trx.sign(key_id_type(),private_key);
|
||||
settle_id = PUSH_TX( db, trx ).operation_results.front().get<object_id_type>();
|
||||
trx.clear();
|
||||
|
||||
generate_blocks(settle_id(db).settlement_date);
|
||||
//We've hit the max force settlement. Can't settle more now.
|
||||
BOOST_CHECK(db.find(settle_id));
|
||||
BOOST_CHECK_EQUAL(get_balance(nathan_id, asset_id_type()), 5344);
|
||||
BOOST_CHECK(!db.get_index_type<call_order_index>().indices().empty());
|
||||
|
||||
generate_blocks(db.get_dynamic_global_properties().next_maintenance_time);
|
||||
//Now it's been another maintenance interval, so we should have some more settlement.
|
||||
//I can't force settle all existing asset, but with a 90% limit, I get pretty close.
|
||||
BOOST_CHECK(db.find(settle_id));
|
||||
BOOST_CHECK_EQUAL(get_balance(nathan_id, asset_id_type()), 5878);
|
||||
BOOST_CHECK(!db.get_index_type<call_order_index>().indices().empty());
|
||||
} FC_LOG_AND_RETHROW()
|
||||
*/
|
||||
}
|
||||
|
||||
BOOST_FIXTURE_TEST_CASE( pop_block_twice, database_fixture )
|
||||
{
|
||||
try
|
||||
|
|
|
|||
Loading…
Reference in a new issue