JayBeams  0.1
Another project to have fun coding.
ut_net_order_imbalance_indicator_message.cpp
Go to the documentation of this file.
3 
4 #include <boost/test/unit_test.hpp>
5 
6 /**
7  * @test Verify that the jb::itch5::net_order_imbalance_indicator_message
8  * decoder works
9  * as expected.
10  */
11 BOOST_AUTO_TEST_CASE(decode_net_order_imbalance_indicator_message) {
12  using namespace jb::itch5;
13  using namespace std::chrono;
14 
17 
19  buf.second, buf.first, 0);
20  BOOST_CHECK_EQUAL(
21  x.header.message_type,
23  BOOST_CHECK_EQUAL(x.header.stock_locate, 0);
24  BOOST_CHECK_EQUAL(x.header.tracking_number, 1);
25  BOOST_CHECK_EQUAL(x.header.timestamp.ts.count(), expected_ts.count());
26  BOOST_CHECK_EQUAL(x.paired_shares, 42000000ULL);
27  BOOST_CHECK_EQUAL(x.imbalance_shares, 424200ULL);
28  BOOST_CHECK_EQUAL(x.imbalance_direction, imbalance_direction_t(u'B'));
29  BOOST_CHECK_EQUAL(x.stock, "HSART");
30  BOOST_CHECK_EQUAL(x.far_price, price4_t(2340600));
31  BOOST_CHECK_EQUAL(x.near_price, price4_t(1230500));
32  BOOST_CHECK_EQUAL(x.current_reference_price, price4_t(890100));
33  BOOST_CHECK_EQUAL(x.cross_type, cross_type_t(u'O'));
34  BOOST_CHECK_EQUAL(
35  x.price_variation_indicator, price_variation_indicator_t(u'A'));
36 
38  buf.second, buf.first, 0);
39  BOOST_CHECK_EQUAL(
40  x.header.message_type,
42  BOOST_CHECK_EQUAL(x.header.stock_locate, 0);
43  BOOST_CHECK_EQUAL(x.header.tracking_number, 1);
44  BOOST_CHECK_EQUAL(x.header.timestamp.ts.count(), expected_ts.count());
45  BOOST_CHECK_EQUAL(x.paired_shares, 42000000ULL);
46  BOOST_CHECK_EQUAL(x.imbalance_shares, 424200ULL);
47  BOOST_CHECK_EQUAL(x.imbalance_direction, imbalance_direction_t(u'B'));
48  BOOST_CHECK_EQUAL(x.stock, "HSART");
49  BOOST_CHECK_EQUAL(x.far_price, price4_t(2340600));
50  BOOST_CHECK_EQUAL(x.near_price, price4_t(1230500));
51  BOOST_CHECK_EQUAL(x.current_reference_price, price4_t(890100));
52  BOOST_CHECK_EQUAL(x.cross_type, cross_type_t(u'O'));
53  BOOST_CHECK_EQUAL(
54  x.price_variation_indicator, price_variation_indicator_t(u'A'));
55 }
56 
57 /**
58  * @test Verify that jb::itch5::net_order_imbalance_indicator_message iostream
59  * operator works as expected.
60  */
61 BOOST_AUTO_TEST_CASE(stream_net_order_imbalance_indicator_message) {
62  using namespace std::chrono;
63  using namespace jb::itch5;
64 
67  buf.second, buf.first, 0);
68  std::ostringstream os;
69  os << tmp;
70  BOOST_CHECK_EQUAL(
71  os.str(), "message_type=I,stock_locate=0"
72  ",tracking_number=1,timestamp=113231.123456789"
73  ",paired_shares=42000000"
74  ",imbalance_shares=424200"
75  ",imbalance_direction=B"
76  ",stock=HSART"
77  ",far_price=234.0600"
78  ",near_price=123.0500"
79  ",current_reference_price=89.0100"
80  ",cross_type=O"
81  ",price_variation_indicator=A");
82 }
83 
84 /**
85  * @test Verify that imbalance_direction_t works as expected.
86  */
87 BOOST_AUTO_TEST_CASE(simple_imbalance_direction) {
88  using namespace jb::itch5;
89  BOOST_CHECK_NO_THROW(imbalance_direction_t(u'B'));
90  BOOST_CHECK_NO_THROW(imbalance_direction_t(u'S'));
91  BOOST_CHECK_NO_THROW(imbalance_direction_t(u'N'));
92  BOOST_CHECK_NO_THROW(imbalance_direction_t(u'O'));
93  BOOST_CHECK_THROW(imbalance_direction_t(u'*'), std::runtime_error);
94 }
95 
96 /**
97  * @test Verify that price_variation_indicator_t works as expected.
98  */
99 BOOST_AUTO_TEST_CASE(simple_price_variation_indicator) {
100  using namespace jb::itch5;
101  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'L'));
102  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'1'));
103  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'2'));
104  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'3'));
105  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'4'));
106  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'5'));
107  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'6'));
108  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'7'));
109  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'8'));
110  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'9'));
111  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'A'));
112  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'B'));
113  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u'C'));
114  BOOST_CHECK_NO_THROW(price_variation_indicator_t(u' '));
115  BOOST_CHECK_THROW(price_variation_indicator_t(u'*'), std::runtime_error);
116 }
static T r(std::size_t size, void const *msg, std::size_t offset)
Read a single message or field.
Contains classes and functions to parse NASDAQ ITCH-5.0 messages, more information about ITCH-5...
char_list_field< u 'L', u '1', u '2', u '3', u '4', u '5', u '6', u '7', u '8', u '9', u 'A', u 'B', u 'C', u' '> price_variation_indicator_t
Represent the &#39;Price Variation Indicator&#39; field in the &#39;Net Order Imbalance Indicator&#39; message...
char_list_field< u 'B', u 'S', u 'N', u 'O'> imbalance_direction_t
Represent the &#39;Imbalance Direction&#39; field in the &#39;Net order Imbalance Indicator&#39; message.
std::pair< char const *, std::size_t > net_order_imbalance_indicator()
Definition: data.cpp:134
std::chrono::nanoseconds expected_ts()
Return the expected timestamp for all the test messages.
Definition: data.cpp:19
BOOST_AUTO_TEST_CASE(decode_net_order_imbalance_indicator_message)