21 #define BOOST_TEST_MODULE isimud_tests
22 #include <boost/test/included/unit_test.hpp>
24 #include <boost/mpl/list.hpp>
26 #include "../exchanges/conversions/batsboe_us_to_fix_conversions.hpp"
28 using namespace libjmmcg;
29 using namespace libisimud;
42 BOOST_AUTO_TEST_SUITE(exchange_gateways)
44 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderExecution, msg, msg_types) {
45 typename msg::OrderExecution exchg_msg(seqNum, clientOrderId1, price, instID, s);
46 exchg_msg.executedQty(0);
47 exchg_msg.leavesQty(0);
49 BOOST_CHECK(fix_msg.is_valid());
50 auto const client_order_id=fix_msg.find<exchanges::FIX::common::FieldsFast::ClOrdID>();
51 BOOST_CHECK_EQUAL(std::string(client_order_id.first, client_order_id.second), clientOrderId1.begin());
52 auto const fix_price=fix_msg.find<exchanges::FIX::common::FieldsFast::Price>();
53 BOOST_CHECK_EQUAL(
static_cast<exchanges::BATSBOE::common::Price_t>(fromstring<
double>(fix_price.first, fix_price.second-fix_price.first)), price/exchanges::BATSBOE::common::implied_decimal_places);
54 auto const sec_id_type=fix_msg.find<exchanges::FIX::common::FieldsFast::SecurityIDSource>();
55 BOOST_CHECK_EQUAL(std::string(sec_id_type.first, sec_id_type.second),
"4");
56 auto const symbol=fix_msg.find<exchanges::FIX::common::FieldsFast::SecurityID>();
57 BOOST_CHECK_EQUAL(std::string(symbol.first), instID.begin());
58 auto const orderQty=fix_msg.find<exchanges::FIX::common::FieldsFast::OrderQty>();
59 BOOST_CHECK_EQUAL(std::string(orderQty.first, orderQty.second),
"0");
60 auto const leavesQty=fix_msg.find<exchanges::FIX::common::FieldsFast::LeavesQty>();
61 BOOST_CHECK_EQUAL(std::string(leavesQty.first, leavesQty.second),
"0");
62 auto const side=fix_msg.find<exchanges::FIX::common::FieldsFast::Side>();
63 BOOST_CHECK_EQUAL(std::string(side.first, side.second),
"1");
66 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderRejected, msg, msg_types) {
67 typename msg::OrderRejected exchg_msg(seqNum, clientOrderId1, exchanges::BATSBOE::common::OrderRejectReason::Admin);
69 BOOST_CHECK(fix_msg.is_valid());
70 auto const client_order_id=fix_msg.find<exchanges::FIX::common::FieldsFast::ClOrdID>();
71 BOOST_CHECK_EQUAL(std::string(client_order_id.first, client_order_id.second), clientOrderId1.begin());
74 BOOST_AUTO_TEST_CASE_TEMPLATE(CancelRejected, msg, msg_types) {
75 typename msg::CancelRejected exchg_msg(seqNum, clientOrderId1, exchanges::BATSBOE::common::OrderRejectReason::Admin);
77 BOOST_CHECK(fix_msg.is_valid());
78 auto const client_order_id=fix_msg.find<exchanges::FIX::common::FieldsFast::ClOrdID>();
79 BOOST_CHECK_EQUAL(std::string(client_order_id.first, client_order_id.second), clientOrderId1.begin());
82 BOOST_AUTO_TEST_CASE_TEMPLATE(UserModifyRejected, msg, msg_types) {
83 typename msg::UserModifyRejected exchg_msg(seqNum, clientOrderId1, exchanges::BATSBOE::common::OrderRejectReason::Admin);
85 BOOST_CHECK(fix_msg.is_valid());
86 auto const ref_seq_num=fix_msg.find<exchanges::FIX::common::FieldsFast::RefSeqNum>();
87 BOOST_CHECK_EQUAL(std::string(ref_seq_num.first, ref_seq_num.second),
"1");
90 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelled, msg, msg_types) {
91 typename msg::OrderCancelled exchg_msg(seqNum, clientOrderId1, exchanges::BATSBOE::common::OrderRejectReason::Admin, price, s, 0, 0);
93 BOOST_CHECK(fix_msg.is_valid());
94 auto const client_order_id=fix_msg.find<exchanges::FIX::common::FieldsFast::ClOrdID>();
95 BOOST_CHECK_EQUAL(std::string(client_order_id.first, client_order_id.second), clientOrderId1.begin());
96 auto const fix_price=fix_msg.find<exchanges::FIX::common::FieldsFast::Price>();
97 BOOST_CHECK_EQUAL(
static_cast<exchanges::BATSBOE::common::Price_t>(fromstring<
double>(fix_price.first, fix_price.second-fix_price.first)), price/exchanges::BATSBOE::common::implied_decimal_places);
98 auto const orderQty=fix_msg.find<exchanges::FIX::common::FieldsFast::OrderQty>();
99 BOOST_CHECK_EQUAL(std::string(orderQty.first, orderQty.second),
"0");
100 auto const leavesQty=fix_msg.find<exchanges::FIX::common::FieldsFast::LeavesQty>();
101 BOOST_CHECK_EQUAL(std::string(leavesQty.first, leavesQty.second),
"0");
102 auto const side=fix_msg.find<exchanges::FIX::common::FieldsFast::Side>();
103 BOOST_CHECK_EQUAL(std::string(side.first, side.second),
"1");
106 BOOST_AUTO_TEST_SUITE_END()