JayBeams  0.1
Another project to have fun coding.
ut_mwcb_breach_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::mwcb_breach_message decoder works
8  * as expected.
9  */
10 BOOST_AUTO_TEST_CASE(decode_mwcb_breach_message) {
11  using namespace jb::itch5;
12  using namespace std::chrono;
13 
16 
17  auto x = decoder<true, mwcb_breach_message>::r(buf.second, buf.first, 0);
18  BOOST_CHECK_EQUAL(x.header.message_type, mwcb_breach_message::message_type);
19  BOOST_CHECK_EQUAL(x.header.stock_locate, 0);
20  BOOST_CHECK_EQUAL(x.header.tracking_number, 1);
21  BOOST_CHECK_EQUAL(x.header.timestamp.ts.count(), expected_ts.count());
22  BOOST_CHECK_EQUAL(x.breached_level, u'2');
23 
24  x = decoder<false, mwcb_breach_message>::r(buf.second, buf.first, 0);
25  BOOST_CHECK_EQUAL(x.header.message_type, mwcb_breach_message::message_type);
26  BOOST_CHECK_EQUAL(x.header.stock_locate, 0);
27  BOOST_CHECK_EQUAL(x.header.tracking_number, 1);
28  BOOST_CHECK_EQUAL(x.header.timestamp.ts.count(), expected_ts.count());
29  BOOST_CHECK_EQUAL(x.breached_level, u'2');
30 }
31 
32 /**
33  * @test Verify that jb::itch5::mwcb_breach_message iostream
34  * operator works as expected.
35  */
36 BOOST_AUTO_TEST_CASE(stream_mwcb_breach_message) {
37  using namespace std::chrono;
38  using namespace jb::itch5;
39 
41  auto tmp = decoder<false, mwcb_breach_message>::r(buf.second, buf.first, 0);
42  std::ostringstream os;
43  os << tmp;
44  BOOST_CHECK_EQUAL(
45  os.str(), "message_type=W,stock_locate=0"
46  ",tracking_number=1,timestamp=113231.123456789"
47  ",breached_level=2");
48 }
49 
50 /**
51  * @test Verify that breached_level_t works as expected.
52  */
53 BOOST_AUTO_TEST_CASE(simple_breached_level) {
54  using namespace jb::itch5;
55  BOOST_CHECK_NO_THROW(breached_level_t(u'1'));
56  BOOST_CHECK_NO_THROW(breached_level_t(u'2'));
57  BOOST_CHECK_NO_THROW(breached_level_t(u'3'));
58  BOOST_CHECK_THROW(breached_level_t(u'*'), std::runtime_error);
59 }
BOOST_AUTO_TEST_CASE(decode_mwcb_breach_message)
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...
std::pair< char const *, std::size_t > mwcb_breach()
Definition: data.cpp:113
char_list_field< u '1', u '2', u '3'> breached_level_t
Represent the &#39;Breached Level&#39; field in the &#39;MWCB Breach Message&#39;.
std::chrono::nanoseconds expected_ts()
Return the expected timestamp for all the test messages.
Definition: data.cpp:19