libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
mit_basic.cpp
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright © 2015 by J.M.McGuiness, isimud@hussar.me.uk
3 **
4 ** This library is free software; you can redistribute it and/or
5 ** modify it under the terms of the GNU Lesser General Public
6 ** License as published by the Free Software Foundation; either
7 ** version 2.1 of the License, or (at your option) any later version.
8 **
9 ** This library is distributed in the hope that it will be useful,
10 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
11 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 ** Lesser General Public License for more details.
13 **
14 ** You should have received a copy of the GNU Lesser General Public
15 ** License along with this library; if not, write to the Free Software
16 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18 
19 #include "stdafx.h"
20 
21 #define BOOST_TEST_MODULE isimud_tests
22 #include <boost/test/included/unit_test.hpp>
23 
24 #include <boost/mpl/list.hpp>
25 
26 #include "../exchanges/MIT/BIT/messages.hpp"
27 #include "../exchanges/MIT/JSE/messages.hpp"
28 #include "../exchanges/MIT/LSE/messages.hpp"
29 #include "../exchanges/MIT/OSLO/messages.hpp"
30 #include "../exchanges/MIT/TRQ/messages.hpp"
31 
32 using namespace libisimud;
33 
34 typedef boost::mpl::list<
41 
42 BOOST_AUTO_TEST_SUITE(exchange_gateways)
43 
44 BOOST_AUTO_TEST_CASE_TEMPLATE(print_details, msg, msg_types) {
45  std::stringstream ss;
46  BOOST_CHECK_NO_THROW(msg::to_stream(ss));
47  BOOST_CHECK(!ss.str().empty());
48 }
49 
50 BOOST_AUTO_TEST_CASE_TEMPLATE(ctor, msg, msg_types) {
51  const typename msg::ClientOrderID_t origClientOrderID{"0000000000000000001"};
52  const typename msg::ClientOrderID_t clientOrderID{"0000000000000000001"};
53  const typename msg::SecurityID_t instID(133215);
54  const typename msg::Price_t price(1);
55 
56  typename msg::LogonRequest logon(typename msg::LogonRequest::logon_args_t::UserName_t{"user"}, typename msg::LogonRequest::logon_args_t::Password_t{"fubar"}, typename msg::LogonRequest::logon_args_t::Password_t{"snafu"});
57  BOOST_CHECK_EQUAL(logon.start_of_message, 2);
58  BOOST_CHECK_EQUAL(logon.length(), sizeof(typename msg::LogonRequest));
59  BOOST_CHECK_EQUAL(logon.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::LogonRequest));
60  BOOST_CHECK_EQUAL(logon.messageVersion, 1);
61  BOOST_CHECK(logon.is_valid());
62  typename msg::LogonReply logonReply;
63  BOOST_CHECK_EQUAL(logonReply.start_of_message, 2);
64  BOOST_CHECK_EQUAL(logonReply.length(), sizeof(typename msg::LogonReply));
65  BOOST_CHECK_EQUAL(logonReply.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::LogonReply));
66  BOOST_CHECK(logonReply.is_valid());
67  typename msg::LogoutRequest logout(exchanges::MIT::common::Reason_t{'U', 's', 'e', 'r', ' ', 'l', 'o', 'g', 'o', 'u', 't', ' ', 'r', 'e', 'c', 'e', 'i', 'v', 'e', 'd'});
68  BOOST_CHECK_EQUAL(logout.start_of_message, 2);
69  BOOST_CHECK_EQUAL(logout.length(), sizeof(typename msg::Logout));
70  BOOST_CHECK_EQUAL(logout.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::LogoutRequest));
71  BOOST_CHECK(logout.is_valid());
72  typename msg::ClientHeartbeat client_heartbeat;
73  BOOST_CHECK_EQUAL(client_heartbeat.start_of_message, 2);
74  BOOST_CHECK_EQUAL(client_heartbeat.length(), sizeof(typename msg::ClientHeartbeat));
75  BOOST_CHECK_EQUAL(client_heartbeat.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::Heartbeat));
76  BOOST_CHECK(client_heartbeat.is_valid());
77  typename msg::ServerHeartbeat server_heartbeat;
78  BOOST_CHECK_EQUAL(server_heartbeat.start_of_message, 2);
79  BOOST_CHECK_EQUAL(server_heartbeat.length(), sizeof(typename msg::ServerHeartbeat));
80  BOOST_CHECK_EQUAL(server_heartbeat.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::Heartbeat));
81  BOOST_CHECK(server_heartbeat.is_valid());
82  typename msg::MissedMessageRequest missedMessageRequest(exchanges::MIT::common::AppID::Partition1, 0);
83  BOOST_CHECK_EQUAL(missedMessageRequest.start_of_message, 2);
84  BOOST_CHECK_EQUAL(missedMessageRequest.length(), sizeof(typename msg::MissedMessageRequest));
85  BOOST_CHECK_EQUAL(missedMessageRequest.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::MissedMessageRequest));
86  BOOST_CHECK(missedMessageRequest.is_valid());
87  typename msg::MissedMessageRequestAck missedMessageRequestAck;
88  BOOST_CHECK_EQUAL(missedMessageRequestAck.start_of_message, 2);
89  BOOST_CHECK_EQUAL(missedMessageRequestAck.length(), sizeof(typename msg::MissedMessageRequestAck));
90  BOOST_CHECK_EQUAL(missedMessageRequestAck.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::MissedMessageRequestAck));
91  BOOST_CHECK(missedMessageRequestAck.is_valid());
92  typename msg::MissedMessageReport missedMessageReport;
93  BOOST_CHECK_EQUAL(missedMessageReport.start_of_message, 2);
94  BOOST_CHECK_EQUAL(missedMessageReport.length(), sizeof(typename msg::MissedMessageReport));
95  BOOST_CHECK_EQUAL(missedMessageReport.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::MissedMessageReport));
96  BOOST_CHECK(missedMessageReport.is_valid());
97  typename msg::Reject reject;
98  BOOST_CHECK_EQUAL(reject.start_of_message, 2);
99  BOOST_CHECK_EQUAL(reject.length(), sizeof(typename msg::Reject));
100  BOOST_CHECK_EQUAL(reject.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::Reject));
101  BOOST_CHECK(reject.is_valid());
102  typename msg::SystemStatus systemStatus;
103  BOOST_CHECK_EQUAL(systemStatus.start_of_message, 2);
104  BOOST_CHECK_EQUAL(systemStatus.length(), sizeof(typename msg::SystemStatus));
105  BOOST_CHECK_EQUAL(systemStatus.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::AdminMsgType::SystemStatus));
106  BOOST_CHECK(systemStatus.is_valid());
107  typename msg::NewOrder_t newOrder(0, clientOrderID, exchanges::MIT::common::OrderType::Market, exchanges::MIT::common::TIF::Day, exchanges::MIT::common::Side::Buy, instID, int32_t(), price);
108  BOOST_CHECK_EQUAL(newOrder.start_of_message, 2);
109  BOOST_CHECK_EQUAL(newOrder.length(), sizeof(typename msg::NewOrder_t));
110  BOOST_CHECK_EQUAL(newOrder.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::ClientMsgType::NewOrder));
111  BOOST_CHECK(newOrder.is_valid());
112  typename msg::OrderCancelReplaceRequest orderCancelReplaceRequest(clientOrderID, origClientOrderID, instID, int32_t(), price, exchanges::MIT::common::TIF::Day, exchanges::MIT::common::Side::Buy);
113  BOOST_CHECK_EQUAL(orderCancelReplaceRequest.start_of_message, 2);
114  BOOST_CHECK_EQUAL(orderCancelReplaceRequest.length(), sizeof(typename msg::OrderCancelReplaceRequest));
115  BOOST_CHECK_EQUAL(orderCancelReplaceRequest.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::ClientMsgType::OrderCancelReplaceRequest));
116  BOOST_CHECK(orderCancelReplaceRequest.is_valid());
117  typename msg::OrderCancelRequest orderCancelRequest(clientOrderID, clientOrderID, instID, exchanges::MIT::common::Side::Buy);
118  BOOST_CHECK_EQUAL(orderCancelRequest.start_of_message, 2);
119  BOOST_CHECK_EQUAL(orderCancelRequest.length(), sizeof(typename msg::OrderCancelRequest));
120  BOOST_CHECK_EQUAL(orderCancelRequest.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::ClientMsgType::OrderCancelRequest));
121  BOOST_CHECK(orderCancelRequest.is_valid());
122  typename msg::OrderMassCancelRequest orderMassCancelRequest(instID);
123  BOOST_CHECK_EQUAL(orderMassCancelRequest.start_of_message, 2);
124  BOOST_CHECK_EQUAL(orderMassCancelRequest.length(), sizeof(typename msg::OrderMassCancelRequest));
125  BOOST_CHECK_EQUAL(orderMassCancelRequest.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::ClientMsgType::OrderMassCancelRequest));
126  BOOST_CHECK(orderMassCancelRequest.is_valid());
127  typename msg::ExecutionReport executionReport;
128  BOOST_CHECK_EQUAL(executionReport.start_of_message, 2);
129  BOOST_CHECK_EQUAL(executionReport.length(), sizeof(typename msg::ExecutionReport));
130  BOOST_CHECK_EQUAL(executionReport.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::ServerMsgType::ExecutionReport));
131  BOOST_CHECK(executionReport.is_valid());
132  typename msg::OrderCancelReject orderCancelReject;
133  BOOST_CHECK_EQUAL(orderCancelReject.start_of_message, 2);
134  BOOST_CHECK_EQUAL(orderCancelReject.length(), sizeof(typename msg::OrderCancelReject));
135  BOOST_CHECK_EQUAL(orderCancelReject.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::ServerMsgType::OrderCancelReject));
136  BOOST_CHECK(orderCancelReject.is_valid());
137  typename msg::OrderMassCancelReport orderMassCancelReport;
138  BOOST_CHECK_EQUAL(orderMassCancelReport.start_of_message, 2);
139  BOOST_CHECK_EQUAL(orderMassCancelReport.length(), sizeof(typename msg::OrderMassCancelReport));
140  BOOST_CHECK_EQUAL(orderMassCancelReport.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::ServerMsgType::OrderMassCancelReport));
141  BOOST_CHECK(orderMassCancelReport.is_valid());
142  typename msg::BusinessReject businessReject;
143  BOOST_CHECK_EQUAL(businessReject.start_of_message, 2);
144  BOOST_CHECK_EQUAL(businessReject.length(), sizeof(typename msg::BusinessReject));
145  BOOST_CHECK_EQUAL(businessReject.type(), static_cast<exchanges::MIT::common::MsgType_t>(exchanges::MIT::common::ServerMsgType::BusinessMessageReject));
146  BOOST_CHECK(businessReject.is_valid());
147 }
148 
149 BOOST_AUTO_TEST_SUITE_END()