This source file includes following definitions.
- BOOST_AUTO_TEST_SUITE
- BOOST_AUTO_TEST_CASE_TEMPLATE
- BOOST_AUTO_TEST_CASE_TEMPLATE
- BOOST_AUTO_TEST_CASE_TEMPLATE
- BOOST_AUTO_TEST_SUITE_END
- BOOST_AUTO_TEST_SUITE_END
- BOOST_AUTO_TEST_CASE_TEMPLATE
- BOOST_AUTO_TEST_CASE_TEMPLATE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include "stdafx.h"
22
23 #define BOOST_TEST_MODULE libjmmcg_tests
24 #include <boost/test/included/unit_test.hpp>
25
26 #include <boost/test/test_case_template.hpp>
27 #include <boost/mpl/list.hpp>
28
29 #include "../exchanges/conversions/fix_to_batsboe_us_conversions.hpp"
30
31 const uint32_t sequenceNumber(1);
32
33 typedef boost::mpl::list<
34 isimud::exchanges::BATSBOE::US::v1::MsgTypes
35
36 > msg_types;
37
38 BOOST_AUTO_TEST_SUITE(exchanges)
39
40 BOOST_AUTO_TEST_SUITE(admin)
41
42 BOOST_AUTO_TEST_CASE_TEMPLATE(LogonRequest, msg, msg_types)
43 {
44 const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
45 "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 };
47 isimud::exchanges::FIX::v5_0sp2::MsgTypes::LogonRequest const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::LogonRequest const &>(*fix_buffer.begin());
48 typename msg::LogonRequest exchg_msg(fix_msg, sequenceNumber, isimud::exchanges::BATSBOE::common::SessionSubID_t(), false);
49 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, isimud::exchanges::BATSBOE::common::msg_start_code);
50 BOOST_CHECK_EQUAL(std::string(exchg_msg.userName.begin(), exchg_msg.userName.size()), "USER");
51 BOOST_CHECK_EQUAL(std::string(exchg_msg.password.begin()), "PASSWORD");
52 }
53
54 BOOST_AUTO_TEST_CASE_TEMPLATE(LogoutRequest, msg, msg_types)
55 {
56 const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
57 "8=FIX.5.0\0019=005\00135=5\00110=092\001"
58 };
59 isimud::exchanges::FIX::v5_0sp2::MsgTypes::LogoutRequest const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::LogoutRequest const &>(*fix_buffer.begin());
60 typename msg::LogoutRequest exchg_msg(fix_msg, sequenceNumber);
61 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, isimud::exchanges::BATSBOE::common::msg_start_code);
62 }
63
64 BOOST_AUTO_TEST_CASE_TEMPLATE(ClientHeartbeat, msg, msg_types)
65 {
66 const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
67 "8=FIX.5.0\0019=005\00135=0\00110=092\001"
68 };
69 isimud::exchanges::FIX::v5_0sp2::MsgTypes::ClientHeartbeat const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::ClientHeartbeat const &>(*fix_buffer.begin());
70 typename msg::ClientHeartbeat exchg_msg(fix_msg, sequenceNumber);
71 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, isimud::exchanges::BATSBOE::common::msg_start_code);
72 }
73
74 BOOST_AUTO_TEST_CASE_TEMPLATE(ServerHeartbeat, msg, msg_types)
75 {
76 const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
77 "8=FIX.5.0\0019=005\00135=0\00110=092\001"
78 };
79 isimud::exchanges::FIX::v5_0sp2::MsgTypes::ServerHeartbeat const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::ServerHeartbeat const &>(*fix_buffer.begin());
80 typename msg::ServerHeartbeat exchg_msg(fix_msg, sequenceNumber);
81 BOOST_CHECK_EQUAL(exchg_msg.start_of_message, isimud::exchanges::BATSBOE::common::msg_start_code);
82 }
83
84 BOOST_AUTO_TEST_SUITE_END()
85
86 BOOST_AUTO_TEST_SUITE(conversions)
87
88 BOOST_AUTO_TEST_CASE_TEMPLATE(NewOrderSingle, msg, msg_types) {
89 const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
90 "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 };
92 isimud::exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle const &>(*fix_buffer.begin());
93 BOOST_CHECK_EQUAL(isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::OrdType>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrdType>()), isimud::exchanges::BATSBOE::common::OrdType::Limit);
94 BOOST_CHECK_EQUAL(isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::TIF>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::TimeInForce>()), isimud::exchanges::BATSBOE::common::TIF::Day);
95 BOOST_CHECK_EQUAL(isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::Side>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Side>()), isimud::exchanges::BATSBOE::common::Side::Buy);
96 BOOST_CHECK_EQUAL(std::string(isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::SecurityID_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Symbol>()).data()), "69");
97 BOOST_CHECK_EQUAL(isimud::exchanges::BATSBOE::common::convert<uint32_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrderQty>()), 10000);
98 BOOST_CHECK_CLOSE(isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::Price_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Price>()), isimud::exchanges::BATSBOE::common::implied_decimal_places*76.75, 0.01);
99 }
100
101 BOOST_AUTO_TEST_SUITE_END()
102
103 BOOST_AUTO_TEST_SUITE(trade)
104
105 BOOST_AUTO_TEST_CASE_TEMPLATE(NewOrderSingle, msg, msg_types) {
106 const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
107 "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 };
109 isimud::exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle const &>(*fix_buffer.begin());
110 typename msg::NewOrder exchg_msg(fix_msg, sequenceNumber);
111 BOOST_CHECK_EQUAL(std::string(exchg_msg.clientOrderID().begin()), "10");
112 BOOST_CHECK_EQUAL(exchg_msg.orderQty(), isimud::exchanges::BATSBOE::common::convert<uint32_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrderQty>()));
113 BOOST_CHECK_EQUAL(exchg_msg.orderType(), isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::OrdType>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrdType>()));
114 BOOST_CHECK_EQUAL(exchg_msg.side(), isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::Side>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Side>()));
115 BOOST_CHECK_EQUAL(exchg_msg.instrumentID(), isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::SecurityID_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::SecurityID>()));
116 BOOST_CHECK_EQUAL(exchg_msg.limitPrice(), isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::Price_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Price>()));
117 BOOST_CHECK_EQUAL(exchg_msg.tif(), isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::TIF>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::TimeInForce>()));
118 }
119
120 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelRequest, msg, msg_types) {
121 const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
122 "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 };
124 isimud::exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelRequest const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelRequest const &>(*fix_buffer.begin());
125 BOOST_CHECK(fix_msg.is_valid());
126 typename msg::CancelOrder exchg_msg(fix_msg, sequenceNumber);
127 BOOST_CHECK_EQUAL(std::string(exchg_msg.originalClientOrderID().begin()), "10");
128 }
129
130 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelReplace, msg, msg_types) {
131 const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
132 "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 };
134 isimud::exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelReplace const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelReplace const &>(*fix_buffer.begin());
135 BOOST_CHECK(fix_msg.is_valid());
136 typename msg::OrderCancelReplaceRequest exchg_msg(fix_msg, sequenceNumber);
137 BOOST_CHECK_EQUAL(std::string(exchg_msg.originalClientOrderID().begin()), "10");
138 BOOST_CHECK_EQUAL(exchg_msg.orderQty(), isimud::exchanges::BATSBOE::common::convert<uint32_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrderQty>()));
139 BOOST_CHECK_EQUAL(exchg_msg.side(), isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::Side>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Side>()));
140 BOOST_CHECK_EQUAL(exchg_msg.limitPrice(), isimud::exchanges::BATSBOE::common::convert<isimud::exchanges::BATSBOE::common::Price_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Price>()));
141 }
142
143 BOOST_AUTO_TEST_SUITE_END()
144
145 BOOST_AUTO_TEST_SUITE_END()