Added tests for checking various market states canceling and added ignoring of canceling the settled state and canceled state.
This commit is contained in:
parent
256eeb3eac
commit
99efbc7ea2
4 changed files with 67 additions and 11 deletions
|
|
@ -292,12 +292,19 @@ namespace
|
|||
// +-------------------+------------------+---------------------+------------------------------+----------------------+
|
||||
> {};
|
||||
|
||||
template <class Fsm,class Event>
|
||||
void no_transition(Event const& e, Fsm& ,int state)
|
||||
template <class Fsm, class Event>
|
||||
void no_transition(Event const& e, Fsm&, int state)
|
||||
{
|
||||
FC_THROW_EXCEPTION(graphene::chain::no_transition, "No transition");
|
||||
}
|
||||
|
||||
template <class Fsm>
|
||||
void no_transition(canceled_event const& e, Fsm&, int state)
|
||||
{
|
||||
//ignore transitions from settled to canceled state
|
||||
//and from canceled to canceled state
|
||||
}
|
||||
|
||||
betting_market_group_object* betting_market_group_obj;
|
||||
betting_market_group_state_machine_(betting_market_group_object* betting_market_group_obj) : betting_market_group_obj(betting_market_group_obj) {}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -223,11 +223,18 @@ namespace
|
|||
// +---------------------------+-----------------------------+----------------------------+---------------------+----------------------+
|
||||
> {};
|
||||
|
||||
template <class Fsm,class Event>
|
||||
template <class Fsm, class Event>
|
||||
void no_transition(Event const& e, Fsm& ,int state)
|
||||
{
|
||||
FC_THROW_EXCEPTION(graphene::chain::no_transition, "No transition");
|
||||
}
|
||||
|
||||
template <class Fsm>
|
||||
void no_transition(canceled_event const& e, Fsm&, int state)
|
||||
{
|
||||
//ignore transitions from settled to canceled state
|
||||
//and from canceled to canceled state
|
||||
}
|
||||
|
||||
betting_market_object* betting_market_obj;
|
||||
betting_market_state_machine_(betting_market_object* betting_market_obj) : betting_market_obj(betting_market_obj) {}
|
||||
|
|
|
|||
|
|
@ -316,10 +316,17 @@ namespace graphene { namespace chain {
|
|||
> {};
|
||||
|
||||
template <class Fsm,class Event>
|
||||
void no_transition(Event const& e, Fsm& ,int state)
|
||||
void no_transition(Event const& e, Fsm&, int state)
|
||||
{
|
||||
FC_THROW_EXCEPTION(graphene::chain::no_transition, "No transition");
|
||||
}
|
||||
|
||||
template <class Fsm>
|
||||
void no_transition(canceled_event const& e, Fsm&, int state)
|
||||
{
|
||||
//ignore transitions from settled to canceled state
|
||||
//and from canceled to canceled state
|
||||
}
|
||||
|
||||
event_object* event_obj;
|
||||
event_state_machine_(event_object* event_obj) : event_obj(event_obj) {}
|
||||
|
|
|
|||
|
|
@ -1622,9 +1622,6 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test)
|
|||
const auto& event_3 = create_event({{"en", "event 3"}}, {{"en", "2016-17"}}, nhl.id);
|
||||
|
||||
const auto& market_group = create_betting_market_group({{"en", "market group 1"}}, event_1.id, betting_market_rules.id, asset_id_type(), false, 0);
|
||||
const auto& market_1 = create_betting_market(market_group.id, {{"en", "market 1"}});
|
||||
const auto& market_2 = create_betting_market(market_group.id, {{"en", "market 2"}});
|
||||
|
||||
//to make bets be not removed immediately
|
||||
update_betting_market_group_impl(market_group.id,
|
||||
fc::optional<internationalized_string_type>(),
|
||||
|
|
@ -1632,8 +1629,42 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test)
|
|||
betting_market_group_status::in_play,
|
||||
false);
|
||||
|
||||
const auto& bet_1_id = place_bet(alice_id, market_1.id, bet_type::back, asset(betAsset, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION);
|
||||
const auto& bet_2_id = place_bet(bob_id, market_1.id, bet_type::lay, asset(betAsset, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION);
|
||||
const auto& market_unresolved = create_betting_market(market_group.id, {{"en", "market unresolved"}});
|
||||
const auto& market_frozen = create_betting_market(market_group.id, {{"en", "market frozen"}});
|
||||
db.modify(market_frozen, [&](betting_market_object& market)
|
||||
{
|
||||
market.on_frozen_event(db);
|
||||
});
|
||||
|
||||
const auto& market_closed = create_betting_market(market_group.id, {{"en", "market closed"}});
|
||||
db.modify(market_closed, [&](betting_market_object& market)
|
||||
{
|
||||
market.on_closed_event(db);
|
||||
});
|
||||
|
||||
const auto& market_graded = create_betting_market(market_group.id, {{"en", "market graded"}});
|
||||
db.modify(market_graded, [&](betting_market_object& market)
|
||||
{
|
||||
market.on_closed_event(db);
|
||||
market.on_graded_event(db, betting_market_resolution_type::win);
|
||||
});
|
||||
|
||||
const auto& market_canceled = create_betting_market(market_group.id, {{"en", "market canceled"}});
|
||||
db.modify(market_canceled, [&](betting_market_object& market)
|
||||
{
|
||||
market.on_canceled_event(db);
|
||||
});
|
||||
|
||||
const auto& market_settled = create_betting_market(market_group.id, {{"en", "market settled"}});
|
||||
db.modify(market_settled, [&](betting_market_object& market)
|
||||
{
|
||||
market.on_closed_event(db);
|
||||
market.on_graded_event(db, betting_market_resolution_type::win);
|
||||
market.on_settled_event(db);
|
||||
});
|
||||
|
||||
const auto& bet_1_id = place_bet(alice_id, market_unresolved.id, bet_type::back, asset(betAsset, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION);
|
||||
const auto& bet_2_id = place_bet(bob_id, market_unresolved.id, bet_type::lay, asset(betAsset, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION);
|
||||
|
||||
delete_event_group(nhl.id);
|
||||
|
||||
|
|
@ -1646,8 +1677,12 @@ BOOST_AUTO_TEST_CASE(event_group_delete_test)
|
|||
|
||||
BOOST_CHECK(betting_market_group_status::canceled == market_group.get_status());
|
||||
|
||||
BOOST_CHECK(betting_market_status::canceled == market_1.get_status());
|
||||
BOOST_CHECK(betting_market_status::canceled == market_2.get_status());
|
||||
BOOST_CHECK(betting_market_status::canceled == market_unresolved.get_status());
|
||||
BOOST_CHECK(betting_market_status::canceled == market_frozen.get_status());
|
||||
BOOST_CHECK(betting_market_status::canceled == market_closed.get_status());
|
||||
BOOST_CHECK(betting_market_status::canceled == market_graded.get_status());
|
||||
BOOST_CHECK(betting_market_status::canceled == market_canceled.get_status());
|
||||
BOOST_CHECK(betting_market_status::settled == 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<bet_object_index>().indices().get<by_id>();
|
||||
|
|
|
|||
Loading…
Reference in a new issue