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_eu_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) {
43 "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"
45 exchanges::
FIX::
v5_0sp2::
MsgTypes::LogonRequest
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::LogonRequest
const &>(*fix_buffer.begin());
46 typename msg::LogonRequest exchg_msg(fix_msg, sequenceNumber, exchanges::BATSBOE::common::SessionSubID_t(),
false);
47 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, exchanges::BATSBOE::common::msg_start_code);
48 BOOST_CHECK_EQUAL(std::string(exchg_msg.userName.begin(), exchg_msg.userName.size()),
"USER");
49 BOOST_CHECK_EQUAL(std::string(exchg_msg.password.begin()),
"PASSWORD");
52 BOOST_AUTO_TEST_CASE_TEMPLATE(LogoutRequest, msg, msg_types) {
54 "8=FIX.5.0\0019=005\00135=5\00110=092\001"
56 exchanges::
FIX::
v5_0sp2::
MsgTypes::LogoutRequest
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::LogoutRequest
const &>(*fix_buffer.begin());
58 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, exchanges::BATSBOE::common::msg_start_code);
61 BOOST_AUTO_TEST_CASE_TEMPLATE(ClientHeartbeat, msg, msg_types) {
63 "8=FIX.5.0\0019=005\00135=0\00110=092\001"
65 exchanges::
FIX::
v5_0sp2::
MsgTypes::ClientHeartbeat
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::ClientHeartbeat
const &>(*fix_buffer.begin());
67 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, exchanges::BATSBOE::common::msg_start_code);
70 BOOST_AUTO_TEST_CASE_TEMPLATE(ServerHeartbeat, msg, msg_types) {
72 "8=FIX.5.0\0019=005\00135=0\00110=092\001"
74 exchanges::
FIX::
v5_0sp2::
MsgTypes::ServerHeartbeat
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::ServerHeartbeat
const &>(*fix_buffer.begin());
76 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, exchanges::BATSBOE::common::msg_start_code);
79 BOOST_AUTO_TEST_SUITE_END()
81 BOOST_AUTO_TEST_SUITE(conversions)
83 BOOST_AUTO_TEST_CASE_TEMPLATE(NewOrderSingle, msg, msg_types) {
85 "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"
87 exchanges::
FIX::
v5_0sp2::
MsgTypes::NewOrderSingle
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle
const &>(*fix_buffer.begin());
88 BOOST_CHECK_EQUAL(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::OrdType>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrdType>()), exchanges::BATSBOE::common::OrdType::Limit);
89 BOOST_CHECK_EQUAL(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::TIF>(fix_msg.find<exchanges::FIX::common::FieldsFast::TimeInForce>()), exchanges::BATSBOE::common::TIF::Day);
90 BOOST_CHECK_EQUAL(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Side>(fix_msg.find<exchanges::FIX::common::FieldsFast::Side>()), exchanges::BATSBOE::common::Side::Buy);
91 BOOST_CHECK_EQUAL(std::string(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::SecurityID_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::Symbol>()).data()),
"69");
92 BOOST_CHECK_EQUAL(exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Quantity_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrderQty>()), 10000);
93 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);
96 BOOST_AUTO_TEST_SUITE_END()
98 BOOST_AUTO_TEST_SUITE(trade)
100 BOOST_AUTO_TEST_CASE_TEMPLATE(NewOrderSingle, msg, msg_types) {
102 "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"
104 exchanges::
FIX::
v5_0sp2::
MsgTypes::NewOrderSingle
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle
const &>(*fix_buffer.begin());
106 BOOST_CHECK_EQUAL(std::string(exchg_msg.clientOrderID().begin()),
"10");
107 BOOST_CHECK_EQUAL(exchg_msg.orderQty(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Quantity_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrderQty>()));
108 BOOST_CHECK_EQUAL(exchg_msg.orderType(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::OrdType>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrdType>()));
109 BOOST_CHECK_EQUAL(exchg_msg.side(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Side>(fix_msg.find<exchanges::FIX::common::FieldsFast::Side>()));
110 BOOST_CHECK_EQUAL(exchg_msg.instrumentID(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::SecurityID_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::SecurityID>()));
111 BOOST_CHECK_EQUAL(exchg_msg.limitPrice(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Price_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::Price>()));
112 BOOST_CHECK_EQUAL(exchg_msg.tif(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::TIF>(fix_msg.find<exchanges::FIX::common::FieldsFast::TimeInForce>()));
115 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelRequest, msg, msg_types) {
117 "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"
119 exchanges::
FIX::
v5_0sp2::
MsgTypes::OrderCancelRequest
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelRequest
const &>(*fix_buffer.begin());
120 BOOST_CHECK(fix_msg.is_valid());
122 BOOST_CHECK_EQUAL(std::string(exchg_msg.originalClientOrderID().begin()),
"10");
125 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelReplace, msg, msg_types) {
127 "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"
129 exchanges::
FIX::
v5_0sp2::
MsgTypes::OrderCancelReplace
const &fix_msg=
reinterpret_cast<exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelReplace
const &>(*fix_buffer.begin());
130 BOOST_CHECK(fix_msg.is_valid());
131 typename msg::OrderCancelReplaceRequest exchg_msg(fix_msg,
sequenceNumber);
132 BOOST_CHECK_EQUAL(std::string(exchg_msg.originalClientOrderID().begin()),
"10");
133 BOOST_CHECK_EQUAL(exchg_msg.orderQty(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Quantity_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::OrderQty>()));
134 BOOST_CHECK_EQUAL(exchg_msg.side(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Side>(fix_msg.find<exchanges::FIX::common::FieldsFast::Side>()));
135 BOOST_CHECK_EQUAL(exchg_msg.limitPrice(), exchanges::BATSBOE::common::convert<exchanges::BATSBOE::common::Price_t>(fix_msg.find<exchanges::FIX::common::FieldsFast::Price>()));
138 BOOST_AUTO_TEST_SUITE_END()
140 BOOST_AUTO_TEST_SUITE_END()