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

  35 // TODO isimud::exchanges::BATSBOE::US::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 {
  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()

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