diff --git a/tests/common/database_fixture.cpp b/tests/common/database_fixture.cpp index 44bb134d..c19d9f11 100644 --- a/tests/common/database_fixture.cpp +++ b/tests/common/database_fixture.cpp @@ -78,14 +78,15 @@ database_fixture::database_fixture() database_fixture::~database_fixture() { + // If we're unwinding due to an exception, don't do any more checks. + // This way, boost test's last checkpoint tells us approximately where the error was. if( !std::uncaught_exception() ) { verify_asset_supplies(); verify_account_history_plugin_index(); + BOOST_CHECK( db.get_node_properties().skip_flags == database::skip_nothing ); } - BOOST_CHECK( db.get_node_properties().skip_flags == database::skip_nothing ); - if( data_dir ) db.close(); return; diff --git a/tests/tests/basic_tests.cpp b/tests/tests/basic_tests.cpp index 65ce489a..efe1ae5b 100644 --- a/tests/tests/basic_tests.cpp +++ b/tests/tests/basic_tests.cpp @@ -62,6 +62,20 @@ BOOST_AUTO_TEST_CASE( price_test ) BOOST_CHECK( ~price::min(0,1) == price::max(1,0) ); BOOST_CHECK( ~price::max(0,1) < ~price::min(0,1) ); BOOST_CHECK( ~price::max(0,1) <= ~price::min(0,1) ); + price a(asset(1), asset(2,1)); + price b(asset(2), asset(2,1)); + price c(asset(1), asset(2,1)); + BOOST_CHECK(a < b); + BOOST_CHECK(b > a); + BOOST_CHECK(a == c); + BOOST_CHECK(!(b == c)); + + price_feed dummy; + dummy.maintenance_collateral_ratio = 1002; + dummy.maximum_short_squeeze_ratio = 1234; + dummy.settlement_price = price(asset(1000), asset(2000, 1)); + price_feed dummy2 = dummy; + BOOST_CHECK(dummy == dummy2); } BOOST_AUTO_TEST_CASE( serialization_tests ) diff --git a/tests/tests/operation_tests.cpp b/tests/tests/operation_tests.cpp index 8196c263..759124b0 100644 --- a/tests/tests/operation_tests.cpp +++ b/tests/tests/operation_tests.cpp @@ -933,7 +933,6 @@ BOOST_AUTO_TEST_CASE( cancel_limit_order_test ) } } -BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( delegate_feeds, 1 ) BOOST_AUTO_TEST_CASE( delegate_feeds ) { using namespace graphene::chain; @@ -955,44 +954,31 @@ BOOST_AUTO_TEST_CASE( delegate_feeds ) asset_publish_feed_operation op({asset(), active_witnesses[0]}); op.asset_id = bit_usd.get_id(); - op.feed.settlement_price = price(asset(GRAPHENE_BLOCKCHAIN_PRECISION),bit_usd.amount(30)); + op.feed.settlement_price = ~price(asset(GRAPHENE_BLOCKCHAIN_PRECISION),bit_usd.amount(30)); // Accept defaults for required collateral trx.operations.emplace_back(op); PUSH_TX( db, trx, ~0 ); - { - //Dumb sanity check of some operators. Only here to improve code coverage. :D - price_feed dummy = op.feed; - BOOST_CHECK(op.feed == dummy); - price a(asset(1), bit_usd.amount(2)); - price b(asset(2), bit_usd.amount(2)); - price c(asset(1), bit_usd.amount(2)); - BOOST_CHECK(a < b); - BOOST_CHECK(b > a); - BOOST_CHECK(a == c); - BOOST_CHECK(!(b == c)); - } - const asset_bitasset_data_object& bitasset = bit_usd.bitasset_data(db); - BOOST_CHECK(bitasset.current_feed.settlement_price.to_real() == GRAPHENE_BLOCKCHAIN_PRECISION / 30.0); + BOOST_CHECK(bitasset.current_feed.settlement_price.to_real() == 30.0 / GRAPHENE_BLOCKCHAIN_PRECISION); BOOST_CHECK(bitasset.current_feed.maintenance_collateral_ratio == GRAPHENE_DEFAULT_MAINTENANCE_COLLATERAL_RATIO); op.publisher = active_witnesses[1]; - op.feed.settlement_price = price(asset(GRAPHENE_BLOCKCHAIN_PRECISION),bit_usd.amount(25)); + op.feed.settlement_price = ~price(asset(GRAPHENE_BLOCKCHAIN_PRECISION),bit_usd.amount(25)); trx.operations.back() = op; PUSH_TX( db, trx, ~0 ); - BOOST_CHECK_EQUAL(bitasset.current_feed.settlement_price.to_real(), GRAPHENE_BLOCKCHAIN_PRECISION / 25.0); + BOOST_CHECK_EQUAL(bitasset.current_feed.settlement_price.to_real(), 30.0 / GRAPHENE_BLOCKCHAIN_PRECISION); BOOST_CHECK(bitasset.current_feed.maintenance_collateral_ratio == GRAPHENE_DEFAULT_MAINTENANCE_COLLATERAL_RATIO); op.publisher = active_witnesses[2]; - op.feed.settlement_price = price(asset(GRAPHENE_BLOCKCHAIN_PRECISION),bit_usd.amount(40)); + op.feed.settlement_price = ~price(asset(GRAPHENE_BLOCKCHAIN_PRECISION),bit_usd.amount(40)); // But this delegate is an idiot. - op.feed.maintenance_collateral_ratio = 1000; + op.feed.maintenance_collateral_ratio = 1001; trx.operations.back() = op; PUSH_TX( db, trx, ~0 ); - BOOST_CHECK_EQUAL(bitasset.current_feed.settlement_price.to_real(), GRAPHENE_BLOCKCHAIN_PRECISION / 30.0); + BOOST_CHECK_EQUAL(bitasset.current_feed.settlement_price.to_real(), 30.0 / GRAPHENE_BLOCKCHAIN_PRECISION); BOOST_CHECK(bitasset.current_feed.maintenance_collateral_ratio == GRAPHENE_DEFAULT_MAINTENANCE_COLLATERAL_RATIO); } catch (const fc::exception& e) { edump((e.to_detail_string()));