1 #include "slp.hpp"
2 #include "slp_meta.hpp"
3 
4 #include <gtest/gtest.h>
5 
6 /*  0                   1                   2                   3
7     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
8    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
9    |    Version    |  Function-ID  |            Length             |
10    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
11    | Length, contd.|O|F|R|       reserved          |Next Ext Offset|
12    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
13    |  Next Extension Offset, contd.|              XID              |
14    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
15    |      Language Tag Length      |         Language Tag          \
16    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */
17 
18 TEST(parseHeaderTest, BasicGoodPath)
19 {
20     // Basic buffer with valid Function-ID
21     slp::buffer testData{0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
22                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
23 
24     slp::Message req;
25     int rc = slp::SUCCESS;
26     std::tie(rc, req) = slp::parser::internal::parseHeader(testData);
27 
28     EXPECT_EQ(rc, 0);
29 }
30 
31 TEST(parseHeaderTest, InvalidBufferSize)
32 {
33     // 1 byte too small
34     slp::buffer testData{0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
35                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
36 
37     slp::Message req;
38     int rc = slp::SUCCESS;
39     std::tie(rc, req) = slp::parser::internal::parseHeader(testData);
40 
41     EXPECT_NE(rc, 0);
42 }
43