root/isimud/tests/fix_to_batsboe_eu.cpp

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. BOOST_AUTO_TEST_SUITE
  2. BOOST_AUTO_TEST_CASE_TEMPLATE
  3. BOOST_AUTO_TEST_CASE_TEMPLATE
  4. BOOST_AUTO_TEST_CASE_TEMPLATE
  5. BOOST_AUTO_TEST_SUITE_END
  6. BOOST_AUTO_TEST_SUITE_END
  7. BOOST_AUTO_TEST_CASE_TEMPLATE
  8. BOOST_AUTO_TEST_CASE_TEMPLATE

   1 /******************************************************************************

   2 ** $Header: svn+ssh://jmmcg@svn.code.sf.net/p/libjmmcg/code/trunk/libjmmcg/isimud/tests/fix_to_batsboe_eu.cpp 2200 2017-10-30 12:24:34Z jmmcg $

   3 **

   4 ** Copyright (c) 2015 by J.M.McGuiness, coder@hussar.me.uk

   5 **

   6 ** This library is free software; you can redistribute it and/or

   7 ** modify it under the terms of the GNU Lesser General Public

   8 ** License as published by the Free Software Foundation; either

   9 ** version 2.1 of the License, or (at your option) any later version.

  10 **

  11 ** This library is distributed in the hope that it will be useful,

  12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of

  13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

  14 ** Lesser General Public License for more details.

  15 **

  16 ** You should have received a copy of the GNU Lesser General Public

  17 ** License along with this library; if not, write to the Free Software

  18 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

  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_eu_conversions.hpp"
  30 
  31 const uint32_t sequenceNumber(1);
  32 
  33 typedef boost::mpl::list<
  34         isimud::exchanges::BATSBOE::EU::v1::MsgTypes//,

  35 // TODO isimud::exchanges::BATSBOE::EU::v2::MsgTypes

  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         const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
  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"
  45         };
  46         isimud::exchanges::FIX::v5_0sp2::MsgTypes::LogonRequest const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::LogonRequest const &>(*fix_buffer.begin());
  47         typename msg::LogonRequest exchg_msg(fix_msg, sequenceNumber, isimud::exchanges::BATSBOE::common::SessionSubID_t(), false);
  48         BOOST_CHECK_EQUAL(exchg_msg.start_of_message, isimud::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");
  51 }
  52 
  53 BOOST_AUTO_TEST_CASE_TEMPLATE(LogoutRequest, msg, msg_types) {
  54         const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
  55                 "8=FIX.5.0\0019=005\00135=5\00110=092\001"
  56         };
  57         isimud::exchanges::FIX::v5_0sp2::MsgTypes::LogoutRequest const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::LogoutRequest const &>(*fix_buffer.begin());
  58         typename msg::LogoutRequest exchg_msg(fix_msg, sequenceNumber);
  59         BOOST_CHECK_EQUAL(exchg_msg.start_of_message, isimud::exchanges::BATSBOE::common::msg_start_code);
  60 }
  61 
  62 BOOST_AUTO_TEST_CASE_TEMPLATE(ClientHeartbeat, msg, msg_types) {
  63         const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
  64                 "8=FIX.5.0\0019=005\00135=0\00110=092\001"
  65         };
  66         isimud::exchanges::FIX::v5_0sp2::MsgTypes::ClientHeartbeat const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::ClientHeartbeat const &>(*fix_buffer.begin());
  67         typename msg::ClientHeartbeat exchg_msg(fix_msg, sequenceNumber);
  68         BOOST_CHECK_EQUAL(exchg_msg.start_of_message, isimud::exchanges::BATSBOE::common::msg_start_code);
  69 }
  70 
  71 BOOST_AUTO_TEST_CASE_TEMPLATE(ServerHeartbeat, msg, msg_types) {
  72         const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
  73                 "8=FIX.5.0\0019=005\00135=0\00110=092\001"
  74         };
  75         isimud::exchanges::FIX::v5_0sp2::MsgTypes::ServerHeartbeat const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::ServerHeartbeat const &>(*fix_buffer.begin());
  76         typename msg::ServerHeartbeat exchg_msg(fix_msg, sequenceNumber);
  77         BOOST_CHECK_EQUAL(exchg_msg.start_of_message, isimud::exchanges::BATSBOE::common::msg_start_code);
  78 }
  79 
  80 BOOST_AUTO_TEST_SUITE_END()
  81 
  82 BOOST_AUTO_TEST_SUITE(conversions)
  83 
  84 BOOST_AUTO_TEST_CASE_TEMPLATE(NewOrderSingle, msg, msg_types) {
  85         const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
  86                 "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         };
  88         isimud::exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle const &>(*fix_buffer.begin());
  89         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);
  90         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);
  91         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);
  92         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");
  93         BOOST_CHECK_EQUAL(isimud::exchanges::BATSBOE::common::convert<uint32_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrderQty>()), 10000);
  94         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);
  95 }
  96 
  97 BOOST_AUTO_TEST_SUITE_END()
  98 
  99 BOOST_AUTO_TEST_SUITE(trade)
 100 
 101 BOOST_AUTO_TEST_CASE_TEMPLATE(NewOrderSingle, msg, msg_types) {
 102         const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
 103                 "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         };
 105         isimud::exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::NewOrderSingle const &>(*fix_buffer.begin());
 106         typename msg::NewOrder exchg_msg(fix_msg, sequenceNumber);
 107         BOOST_CHECK_EQUAL(std::string(exchg_msg.clientOrderID().begin()), "10");
 108         BOOST_CHECK_EQUAL(exchg_msg.orderQty(), isimud::exchanges::BATSBOE::common::convert<uint32_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrderQty>()));
 109         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>()));
 110         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>()));
 111         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>()));
 112         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>()));
 113         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>()));
 114 }
 115 
 116 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelRequest, msg, msg_types) {
 117         const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
 118                 "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         };
 120         isimud::exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelRequest const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelRequest const &>(*fix_buffer.begin());
 121         BOOST_CHECK(fix_msg.is_valid());
 122         typename msg::CancelOrder exchg_msg(fix_msg, sequenceNumber);
 123         BOOST_CHECK_EQUAL(std::string(exchg_msg.originalClientOrderID().begin()), "10");
 124 }
 125 
 126 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelReplace, msg, msg_types) {
 127         const isimud::exchanges::FIX::common::underlying_fix_data_buffer fix_buffer={
 128                 "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         };
 130         isimud::exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelReplace const &fix_msg=reinterpret_cast<isimud::exchanges::FIX::v5_0sp2::MsgTypes::OrderCancelReplace const &>(*fix_buffer.begin());
 131         BOOST_CHECK(fix_msg.is_valid());
 132         typename msg::OrderCancelReplaceRequest exchg_msg(fix_msg, sequenceNumber);
 133         BOOST_CHECK_EQUAL(std::string(exchg_msg.originalClientOrderID().begin()), "10");
 134         BOOST_CHECK_EQUAL(exchg_msg.orderQty(), isimud::exchanges::BATSBOE::common::convert<uint32_t>(fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrderQty>()));
 135         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>()));
 136         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>()));
 137 }
 138 
 139 BOOST_AUTO_TEST_SUITE_END()
 140 
 141 BOOST_AUTO_TEST_SUITE_END()

/* [<][>][^][v][top][bottom][index][help] */