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_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/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
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()