JayBeams  0.1
Another project to have fun coding.
ut_add_order_message.cpp
Go to the documentation of this file.
2 
3 #include <boost/test/unit_test.hpp>
4 #include <type_traits>
5 
6 /**
7  * @test Verify that jb::pitch2::add_order_message works as expected.
8  */
9 BOOST_AUTO_TEST_CASE(add_order_message_basic) {
10  using namespace jb::pitch2;
11  BOOST_CHECK_EQUAL(true, std::is_pod<add_order_message>::value);
12  BOOST_CHECK_EQUAL(sizeof(add_order_message), std::size_t(34));
13 
14  char const buf[] = u8"\x22" // Length (34)
15  "\x21" // Message Type (33 '!')
16  "\x18\xD2\x06\x00" // Time Offset (447,000)
17  "\x05\x40\x5B\x77\x8F\x56\x1D\x0B" // Order Id
18  "\x42" // Side Indicator (66 'B' Buy)
19  "\x20\x4E\x00\x00" // Quantity (20,000)
20  "\x5A\x56\x5A\x5A\x54\x20" // Symbol (ZVZZT)
21  "\x5A\x23\x00\x00\x00\x00\x00\x00" // Price ($0.9050)
22  "\x01" // Add Flags (Bit 0 on -> Displayed)
23  ;
25  BOOST_REQUIRE_EQUAL(sizeof(buf) - 1, sizeof(msg));
26  std::memcpy(&msg, buf, sizeof(msg));
27  BOOST_CHECK_EQUAL(int(msg.length.value()), 34);
28  BOOST_CHECK_EQUAL(int(msg.message_type.value()), 33);
29  BOOST_CHECK_EQUAL(msg.time_offset.value(), 447000);
30  BOOST_CHECK_EQUAL(msg.order_id.value(), 0x0B1D568F775B4005ULL);
31  BOOST_CHECK_EQUAL(msg.side_indicator.value(), 0x42);
32  BOOST_CHECK_EQUAL(msg.quantity.value(), 20000);
33  BOOST_CHECK_EQUAL(msg.symbol, jb::fixed_string<6>("ZVZZT"));
34  BOOST_CHECK_EQUAL(msg.price.value(), 9050);
35  BOOST_CHECK_EQUAL(msg.add_flags.value(), 0x01);
36 
37  std::ostringstream os;
38  os << msg;
39  BOOST_CHECK_EQUAL(
40  os.str(),
41  std::string("length=34,message_type=33,time_offset=447000,"
42  "order_id=800891482924597253,side_indicator=B,"
43  "quantity=20000,symbol=ZVZZT ,price=9050,add_flags=1"));
44 }
boost::endian::little_uint8_buf_t side_indicator
boost::endian::little_uint32_buf_t time_offset
Represent the &#39;Add Order&#39; message in the PITCH-2.X protocol.
boost::endian::little_uint8_buf_t message_type
boost::endian::little_uint8_buf_t length
boost::endian::little_uint64_buf_t order_id
boost::endian::little_uint8_buf_t add_flags
BOOST_AUTO_TEST_CASE(decode_add_order_message)