limit_order_id_type trigger_swan(share_type amount1, share_type amount2) { set_expiration( db, trx ); // starting out with price 1:1 set_feed( 1, 1 ); // start out with 2:1 collateral borrow(borrower(), swan().amount(amount1), back().amount(2*amount1)); borrow(borrower2(), swan().amount(amount2), back().amount(4*amount2)); FC_ASSERT( get_balance(borrower(), swan()) == amount1 ); FC_ASSERT( get_balance(borrower2(), swan()) == amount2 ); FC_ASSERT( get_balance(borrower() , back()) == init_balance - 2*amount1 ); FC_ASSERT( get_balance(borrower2(), back()) == init_balance - 4*amount2 ); set_feed( 1, 2 ); // this sell order is designed to trigger a black swan limit_order_id_type oid = create_sell_order( borrower2(), swan().amount(1), back().amount(3) )->id; FC_ASSERT( get_balance(borrower(), swan()) == amount1 ); FC_ASSERT( get_balance(borrower2(), swan()) == amount2 - 1 ); FC_ASSERT( get_balance(borrower() , back()) == init_balance - 2*amount1 ); FC_ASSERT( get_balance(borrower2(), back()) == init_balance - 2*amount2 ); BOOST_CHECK( swan().bitasset_data(db).has_settlement() ); return oid; }
const limit_order_object*database_fixture::create_sell_order(account_id_type user, const asset& amount, const asset& recv) { auto r = create_sell_order(user(db), amount, recv); verify_asset_supplies(db); return r; }