root/isimud/tests/batsboe_eu_to_fix.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_CASE_TEMPLATE

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

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

   3 **

   4 ** Copyright © 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/batsboe_eu_to_fix_conversions.hpp"
  30 
  31 const int32_t seqNum=1;
  32 const isimud::exchanges::BATSBOE::common::ClientOrderID_t clientOrderId1{"abcdefghijklm0test1"};
  33 const isimud::exchanges::BATSBOE::common::Price_t price=42*isimud::exchanges::BATSBOE::common::implied_decimal_places;
  34 const isimud::exchanges::BATSBOE::common::SecurityID_t instID{"GB00BH4HKS39"};
  35 const isimud::exchanges::BATSBOE::common::Side s=isimud::exchanges::BATSBOE::common::Side::Buy;
  36 
  37 typedef boost::mpl::list<
  38         isimud::exchanges::BATSBOE::EU::v1::MsgTypes//,

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

  40 > msg_types;
  41 
  42 BOOST_AUTO_TEST_SUITE(exchanges)
  43 
  44 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderExecution, msg, msg_types) {
  45         typename msg::OrderExecution exchg_msg(seqNum, clientOrderId1, price, instID, s);
  46         exchg_msg.executedQty(0);
  47         exchg_msg.leavesQty(0);
  48         isimud::exchanges::FIX::v5_0sp2::MsgTypes::ExecutionReport fix_msg(exchg_msg);
  49         BOOST_CHECK(fix_msg.is_valid());
  50         auto const client_order_id=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::ClOrdID>();
  51         BOOST_CHECK_EQUAL(std::string(client_order_id.first, client_order_id.second), clientOrderId1.begin());
  52         auto const fix_price=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Price>();
  53         BOOST_CHECK_EQUAL(static_cast<isimud::exchanges::BATSBOE::common::Price_t>(jmmcg::fromstring<double>(fix_price.first, fix_price.second-fix_price.first)), price/isimud::exchanges::BATSBOE::common::implied_decimal_places);
  54         auto const sec_id_type=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::SecurityIDSource>();
  55         BOOST_CHECK_EQUAL(std::string(sec_id_type.first, sec_id_type.second), "4");
  56         auto const symbol=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::SecurityID>();
  57         BOOST_CHECK_EQUAL(std::string(symbol.first), instID.begin());
  58         auto const orderQty=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrderQty>();
  59         BOOST_CHECK_EQUAL(std::string(orderQty.first, orderQty.second), "0");
  60         auto const leavesQty=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::LeavesQty>();
  61         BOOST_CHECK_EQUAL(std::string(leavesQty.first, leavesQty.second), "0");
  62         auto const side=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Side>();
  63         BOOST_CHECK_EQUAL(std::string(side.first, side.second), "1");
  64 }
  65 
  66 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderRejected, msg, msg_types) {
  67         typename msg::OrderRejected exchg_msg(seqNum, clientOrderId1, isimud::exchanges::BATSBOE::common::OrderRejectReason::Admin);
  68         isimud::exchanges::FIX::v5_0sp2::MsgTypes::OrderRejected fix_msg(exchg_msg);
  69         BOOST_CHECK(fix_msg.is_valid());
  70         auto const client_order_id=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::ClOrdID>();
  71         BOOST_CHECK_EQUAL(std::string(client_order_id.first, client_order_id.second), clientOrderId1.begin());
  72 }
  73 
  74 BOOST_AUTO_TEST_CASE_TEMPLATE(CancelRejected, msg, msg_types) {
  75         typename msg::CancelRejected exchg_msg(seqNum, clientOrderId1, isimud::exchanges::BATSBOE::common::OrderRejectReason::Admin);
  76         isimud::exchanges::FIX::v5_0sp2::MsgTypes::CancelRejected fix_msg(exchg_msg);
  77         BOOST_CHECK(fix_msg.is_valid());
  78         auto const client_order_id=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::ClOrdID>();
  79         BOOST_CHECK_EQUAL(std::string(client_order_id.first, client_order_id.second), clientOrderId1.begin());
  80 }
  81 
  82 BOOST_AUTO_TEST_CASE_TEMPLATE(UserModifyRejected, msg, msg_types) {
  83         typename msg::UserModifyRejected exchg_msg(seqNum, clientOrderId1, isimud::exchanges::BATSBOE::common::OrderRejectReason::Admin);
  84         const isimud::exchanges::FIX::v5_0sp2::MsgTypes::BusinessMessageReject fix_msg(exchg_msg);
  85         BOOST_CHECK(fix_msg.is_valid());
  86         auto const ref_seq_num=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::RefSeqNum>();
  87         BOOST_CHECK_EQUAL(std::string(ref_seq_num.first, ref_seq_num.second), "1");
  88 }
  89 
  90 BOOST_AUTO_TEST_CASE_TEMPLATE(OrderCancelled, msg, msg_types) {
  91         typename msg::OrderCancelled exchg_msg(seqNum, clientOrderId1, isimud::exchanges::BATSBOE::common::OrderRejectReason::Admin, price, s, 0, 0);
  92         isimud::exchanges::FIX::v5_0sp2::MsgTypes::ExecutionReport fix_msg(exchg_msg);
  93         BOOST_CHECK(fix_msg.is_valid());
  94         auto const client_order_id=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::ClOrdID>();
  95         BOOST_CHECK_EQUAL(std::string(client_order_id.first, client_order_id.second), clientOrderId1.begin());
  96         auto const fix_price=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Price>();
  97         BOOST_CHECK_EQUAL(static_cast<isimud::exchanges::BATSBOE::common::Price_t>(jmmcg::fromstring<double>(fix_price.first, fix_price.second-fix_price.first)), price/isimud::exchanges::BATSBOE::common::implied_decimal_places);
  98         auto const orderQty=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::OrderQty>();
  99         BOOST_CHECK_EQUAL(std::string(orderQty.first, orderQty.second), "0");
 100         auto const leavesQty=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::LeavesQty>();
 101         BOOST_CHECK_EQUAL(std::string(leavesQty.first, leavesQty.second), "0");
 102         auto const side=fix_msg.find<isimud::exchanges::FIX::common::FieldsFast::Side>();
 103         BOOST_CHECK_EQUAL(std::string(side.first, side.second), "1");
 104 }
 105 
 106 BOOST_AUTO_TEST_SUITE_END()

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