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/fix_to_batsboe_us_conversions.hpp"
28 using namespace libisimud;
37 BOOST_AUTO_TEST_SUITE(exchange_gateways)
39 BOOST_AUTO_TEST_SUITE(admin)
41 BOOST_AUTO_TEST_CASE_TEMPLATE(LogonRequest, msg, msg_types)
44 "8=FIX.5.0\0019=099\00135=A\00149=SENDER\00156=TARGET\00134=1\00152=20000426-12:05:06\00198=0\001108=30\001553=USER\001554=PASSWORD\001925=NEWPASSWD\00110=255\001"
46 exchanges::
FIX::
v5_0sp2::
MsgTypes::LogonRequest
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::LogonRequest
const &>(*fix_buffer.begin());
47 typename msg::LogonRequest exchg_msg(fix_msg, sequenceNumber, exchanges::BATSBOE::common::SessionSubID_t(),
false);
48 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, exchanges::BATSBOE::common::msg_start_code);
49 BOOST_CHECK_EQUAL(std::string(exchg_msg.userName.begin(), exchg_msg.userName.size()),
"USER");
50 BOOST_CHECK_EQUAL(std::string(exchg_msg.password.begin()),
"PASSWORD");
53 BOOST_AUTO_TEST_CASE_TEMPLATE(LogoutRequest, msg, msg_types)
56 "8=FIX.5.0\0019=005\00135=5\00110=092\001"
58 exchanges::
FIX::
v5_0sp2::
MsgTypes::LogoutRequest
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::LogoutRequest
const &>(*fix_buffer.begin());
60 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, exchanges::BATSBOE::common::msg_start_code);
63 BOOST_AUTO_TEST_CASE_TEMPLATE(ClientHeartbeat, msg, msg_types)
66 "8=FIX.5.0\0019=005\00135=0\00110=092\001"
68 exchanges::
FIX::
v5_0sp2::
MsgTypes::ClientHeartbeat
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::ClientHeartbeat
const &>(*fix_buffer.begin());
70 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, exchanges::BATSBOE::common::msg_start_code);
73 BOOST_AUTO_TEST_CASE_TEMPLATE(ServerHeartbeat, msg, msg_types)
76 "8=FIX.5.0\0019=005\00135=0\00110=092\001"
78 exchanges::
FIX::
v5_0sp2::
MsgTypes::ServerHeartbeat
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::ServerHeartbeat
const &>(*fix_buffer.begin());
80 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, exchanges::BATSBOE::common::msg_start_code);
83 BOOST_AUTO_TEST_SUITE_END()
85 BOOST_AUTO_TEST_SUITE(conversions)
87 BOOST_AUTO_TEST_CASE_TEMPLATE(NewOrderSingle, msg, msg_types) {
89 "8=FIX.5.0\0019=151\00135=D\00134=10\00143=N\00149=VENDOR\00150=CUSTOME\00156=BROKER\00160=19980930-09:25:58\0011=XQCCFUND\00111=10\00121=1\00155=69\00148=GB0000595859\00122=4\00154=1\00138=10000\00140=2\00144=76.750000\00159=0\00110=147\001"
91 exchanges::
FIX::
v5_0sp2::
MsgTypes::NewOrderSingle
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle
const &>(*fix_buffer.begin());
92 BOOST_CHECK_EQUAL(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::OrdType>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrdType>()), exchanges::BATSBOE::common::OrdType::Limit);
93 BOOST_CHECK_EQUAL(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::TIF>(fix_msg.find<exchanges::FIX::common::FieldsFast::TimeInForce>()), exchanges::BATSBOE::common::TIF::Day);
94 BOOST_CHECK_EQUAL(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Side>(fix_msg.find<exchanges::FIX::common::FieldsFast::Side>()), exchanges::BATSBOE::common::Side::Buy);
95 BOOST_CHECK_EQUAL(std::string(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::SecurityID_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::Symbol>()).data()),
"69");
96 BOOST_CHECK_EQUAL(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Quantity_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrderQty>()), 10000);
97 BOOST_CHECK_CLOSE(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Price_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::Price>()), exchanges::BATSBOE::common::implied_decimal_places*76.75, 0.01);
100 BOOST_AUTO_TEST_SUITE_END()
102 BOOST_AUTO_TEST_SUITE(trade)
104 BOOST_AUTO_TEST_CASE_TEMPLATE(NewOrderSingle, msg, msg_types) {
106 "8=FIX.5.0\0019=151\00135=D\00134=10\00143=N\00149=VENDOR\00150=CUSTOME\00156=BROKER\00160=19980930-09:25:58\0011=XQCCFUND\00111=10\00121=1\00155=69\00148=GB0000595859\00122=4\00154=1\00138=10000\00140=2\00144=76.750000\00159=0\00110=147\001"
108 exchanges::
FIX::
v5_0sp2::
MsgTypes::NewOrderSingle
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle
const &>(*fix_buffer.begin());
110 BOOST_CHECK_EQUAL(std::string(exchg_msg.clientOrderID().begin()),
"10");
111 BOOST_CHECK_EQUAL(exchg_msg.orderQty(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Quantity_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrderQty>()));
112 BOOST_CHECK_EQUAL(exchg_msg.orderType(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::OrdType>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrdType>()));
113 BOOST_CHECK_EQUAL(exchg_msg.side(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Side>(fix_msg.find<exchanges::FIX::common::FieldsFast::Side>()));
114 BOOST_CHECK_EQUAL(exchg_msg.instrumentID(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::SecurityID_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::SecurityID>()));
115 BOOST_CHECK_EQUAL(exchg_msg.limitPrice(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Price_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::Price>()));
116 BOOST_CHECK_EQUAL(exchg_msg.tif(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::TIF>(fix_msg.find<exchanges::FIX::common::FieldsFast::TimeInForce>()));
119 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelRequest, msg, msg_types) {
121 "8=FIX.5.0\0019=141\00135=F\00111=10\00141=10\00148=GB00BH4HKS39\00149=VENDOR\00156=BROKER\00134=10\00152=20000426-12:05:06\00155=EK\00154=1\00160=19980930-09:25:58\00138=99\00140=2\00144=43.000000\00159=0\00110=102\001"
123 exchanges::
FIX::
v5_0sp2::
MsgTypes::OrderCancelRequest
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelRequest
const &>(*fix_buffer.begin());
124 BOOST_CHECK(fix_msg.is_valid());
126 BOOST_CHECK_EQUAL(std::string(exchg_msg.originalClientOrderID().begin()),
"10");
129 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelReplace, msg, msg_types) {
131 "8=FIX.5.0\0019=141\00135=G\00111=10\00141=10\00148=GB00BH4HKS39\00149=VENDOR\00156=BROKER\00134=10\00152=20000426-12:05:06\00155=EK\00154=1\00160=19980930-09:25:58\00138=99\00140=1\00144=43.000000\00159=0\00110=102\001"
133 exchanges::
FIX::
v5_0sp2::
MsgTypes::OrderCancelReplace
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelReplace
const &>(*fix_buffer.begin());
134 BOOST_CHECK(fix_msg.is_valid());
135 typename msg::OrderCancelReplaceRequest exchg_msg(fix_msg,
sequenceNumber);
136 BOOST_CHECK_EQUAL(std::string(exchg_msg.originalClientOrderID().begin()),
"10");
137 BOOST_CHECK_EQUAL(exchg_msg.orderQty(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Quantity_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrderQty>()));
138 BOOST_CHECK_EQUAL(exchg_msg.side(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Side>(fix_msg.find<exchanges::FIX::common::FieldsFast::Side>()));
139 BOOST_CHECK_EQUAL(exchg_msg.limitPrice(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Price_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::Price>()));
142 BOOST_AUTO_TEST_SUITE_END()
144 BOOST_AUTO_TEST_SUITE_END()