JayBeams  0.1
Another project to have fun coding.
ut_short_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::short_add_order_message works as expected.
8  */
9 BOOST_AUTO_TEST_CASE(short_add_order_message_basic) {
10  using namespace jb::pitch2;
11  BOOST_CHECK_EQUAL(true, std::is_pod<short_add_order_message>::value);
12  BOOST_CHECK_EQUAL(sizeof(short_add_order_message), std::size_t(26));
13 
14  char const buf[] = u8"\x1A" // Length (26)
15  "\x22" // Message Type (34 '"')
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" // Quantity (20,000)
20  "\x5A\x56\x5A\x5A\x54\x20" // Symbol (ZVZZT)
21  "\x0A\x28" // Price ($102.50)
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()), 26);
28  BOOST_CHECK_EQUAL(int(msg.message_type.value()), 34);
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(), 10250);
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=26,message_type=34,time_offset=447000,"
42  "order_id=800891482924597253,side_indicator=B,"
43  "quantity=20000,symbol=ZVZZT ,price=10250,add_flags=1"));
44 }
boost::endian::little_uint8_buf_t side_indicator
boost::endian::little_uint32_buf_t time_offset
BOOST_AUTO_TEST_CASE(short_add_order_message_basic)
Represent the short version of &#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