@@ -18,7 +18,7 @@ SCENARIO("Se/Deserialize service_discovery messages") {
18
18
19
19
message_20::Variant variant (io::v2gtp::PayloadType::Part20Main, stream_view);
20
20
21
- THEN (" It should be decoded succussfully " ) {
21
+ THEN (" It should be decoded successfully " ) {
22
22
23
23
REQUIRE (variant.get_type () == message_20::Type::ServiceDiscoveryReq);
24
24
@@ -30,7 +30,58 @@ SCENARIO("Se/Deserialize service_discovery messages") {
30
30
}
31
31
}
32
32
33
- // TODO(sl): Adding test with service_discovery_req supported_service_ids
33
+ GIVEN (" Deserialize service_discovery_req_with_supported_service_ids" ) {
34
+
35
+ uint8_t doc_raw[] = {0x80 , 0x7c , 0x04 , 0x02 , 0x75 , 0xff , 0x96 , 0x4a , 0x2c , 0xed ,
36
+ 0xa1 , 0x0e , 0x38 , 0x7e , 0x8a , 0x60 , 0x62 , 0x00 , 0x44 };
37
+
38
+ const io::StreamInputView stream_view{doc_raw, sizeof (doc_raw)};
39
+
40
+ message_20::Variant variant (io::v2gtp::PayloadType::Part20Main, stream_view);
41
+
42
+ THEN (" It should be decoded successfully" ) {
43
+
44
+ REQUIRE (variant.get_type () == message_20::Type::ServiceDiscoveryReq);
45
+
46
+ const auto & msg = variant.get <message_20::ServiceDiscoveryRequest>();
47
+ const auto & header = msg.header ;
48
+
49
+ REQUIRE (header.session_id == std::array<uint8_t , 8 >{0x04 , 0xEB , 0xFF , 0x2C , 0x94 , 0x59 , 0xDB , 0x42 });
50
+ REQUIRE (header.timestamp == 1692009443 );
51
+ REQUIRE (msg.supported_service_ids .has_value () == true );
52
+ REQUIRE (msg.supported_service_ids .value ().size () == 1 );
53
+ REQUIRE (msg.supported_service_ids .value ()[0 ] == 2 );
54
+ }
55
+ }
56
+
57
+ GIVEN (" Serialize service_discovery_req" ) {
58
+
59
+ message_20::ServiceDiscoveryRequest req;
60
+
61
+ req.header = message_20::Header{{0x04 , 0xEB , 0xFF , 0x2C , 0x94 , 0x59 , 0xDB , 0x42 }, 1692009443 };
62
+
63
+ std::vector<uint8_t > expected = {0x80 , 0x7c , 0x04 , 0x02 , 0x75 , 0xff , 0x96 , 0x4a , 0x2c ,
64
+ 0xed , 0xa1 , 0x0e , 0x38 , 0x7e , 0x8a , 0x60 , 0x62 , 0x80 };
65
+
66
+ THEN (" It should be serialized successfully" ) {
67
+ REQUIRE (serialize_helper (req) == expected);
68
+ }
69
+ }
70
+
71
+ GIVEN (" Serialize service_discovery_req_with_supported_service_ids" ) {
72
+
73
+ message_20::ServiceDiscoveryRequest req;
74
+
75
+ req.header = message_20::Header{{0x04 , 0xEB , 0xFF , 0x2C , 0x94 , 0x59 , 0xDB , 0x42 }, 1692009443 };
76
+ req.supported_service_ids = {2 };
77
+
78
+ std::vector<uint8_t > expected = {0x80 , 0x7c , 0x04 , 0x02 , 0x75 , 0xff , 0x96 , 0x4a , 0x2c , 0xed ,
79
+ 0xa1 , 0x0e , 0x38 , 0x7e , 0x8a , 0x60 , 0x62 , 0x00 , 0x44 };
80
+
81
+ THEN (" It should be serialized successfully" ) {
82
+ REQUIRE (serialize_helper (req) == expected);
83
+ }
84
+ }
34
85
35
86
GIVEN (" Serialize service_discovery_res" ) {
36
87
@@ -45,8 +96,86 @@ SCENARIO("Se/Deserialize service_discovery messages") {
45
96
std::vector<uint8_t > expected = {0x80 , 0x80 , 0x04 , 0x1e , 0xa6 , 0x5f , 0xc9 , 0x9b , 0xa7 , 0x6c , 0x4d , 0x8c ,
46
97
0x2b , 0xfe , 0x1b , 0x60 , 0x62 , 0x00 , 0x00 , 0x02 , 0x00 , 0x01 , 0x80 , 0x50 };
47
98
48
- THEN (" It should be serialized succussfully" ) {
99
+ THEN (" It should be serialized successfully" ) {
100
+ REQUIRE (serialize_helper (res) == expected);
101
+ }
102
+ }
103
+
104
+ GIVEN (" Serialize service_discovery_res_with_vas_list" ) {
105
+
106
+ message_20::ServiceDiscoveryResponse res;
107
+
108
+ res.header = message_20::Header{{0x3D , 0x4C , 0xBF , 0x93 , 0x37 , 0x4E , 0xD8 , 0x9B }, 1725456322 };
109
+ res.response_code = message_20::datatypes::ResponseCode::OK;
110
+ res.service_renegotiation_supported = false ;
111
+ res.energy_transfer_service_list = {{message_20::datatypes::ServiceCategory::DC, false },
112
+ {message_20::datatypes::ServiceCategory::DC_BPT, false }};
113
+ res.vas_list = {{message_20::datatypes::ServiceCategory::Internet, true }};
114
+
115
+ std::vector<uint8_t > expected = {0x80 , 0x80 , 0x04 , 0x1e , 0xa6 , 0x5f , 0xc9 , 0x9b , 0xa7 , 0x6c , 0x4d , 0x8c , 0x2b ,
116
+ 0xfe , 0x1b , 0x60 , 0x62 , 0x00 , 0x00 , 0x02 , 0x00 , 0x01 , 0x80 , 0x40 , 0x82 , 0x22 };
117
+
118
+ THEN (" It should be serialized successfully" ) {
49
119
REQUIRE (serialize_helper (res) == expected);
50
120
}
51
121
}
122
+
123
+ GIVEN (" Deserialize service_discovery_res" ) {
124
+
125
+ uint8_t doc_raw[] = {0x80 , 0x80 , 0x04 , 0x1e , 0xa6 , 0x5f , 0xc9 , 0x9b , 0xa7 , 0x6c , 0x4d , 0x8c ,
126
+ 0x2b , 0xfe , 0x1b , 0x60 , 0x62 , 0x00 , 0x00 , 0x02 , 0x00 , 0x01 , 0x80 , 0x50 };
127
+
128
+ const io::StreamInputView stream_view{doc_raw, sizeof (doc_raw)};
129
+
130
+ message_20::Variant variant (io::v2gtp::PayloadType::Part20Main, stream_view);
131
+
132
+ THEN (" It should be decoded successfully" ) {
133
+
134
+ REQUIRE (variant.get_type () == message_20::Type::ServiceDiscoveryRes);
135
+
136
+ const auto & msg = variant.get <message_20::ServiceDiscoveryResponse>();
137
+ const auto & header = msg.header ;
138
+
139
+ REQUIRE (header.session_id == std::array<uint8_t , 8 >{0x3D , 0x4C , 0xBF , 0x93 , 0x37 , 0x4E , 0xD8 , 0x9B });
140
+ REQUIRE (header.timestamp == 1725456322 );
141
+ REQUIRE (msg.response_code == message_20::datatypes::ResponseCode::OK);
142
+ REQUIRE (msg.service_renegotiation_supported == false );
143
+ REQUIRE (msg.energy_transfer_service_list .size () == 2 );
144
+ REQUIRE (msg.energy_transfer_service_list [0 ].service_id == message_20::datatypes::ServiceCategory::DC);
145
+ REQUIRE (msg.energy_transfer_service_list [0 ].free_service == false );
146
+ REQUIRE (msg.energy_transfer_service_list [1 ].service_id == message_20::datatypes::ServiceCategory::DC_BPT);
147
+ REQUIRE (msg.energy_transfer_service_list [1 ].free_service == false );
148
+ }
149
+ }
150
+
151
+ GIVEN (" Deserialize service_discovery_res_with_vas_list" ) {
152
+
153
+ uint8_t doc_raw[] = {0x80 , 0x80 , 0x04 , 0x1e , 0xa6 , 0x5f , 0xc9 , 0x9b , 0xa7 , 0x6c , 0x4d , 0x8c , 0x2b ,
154
+ 0xfe , 0x1b , 0x60 , 0x62 , 0x00 , 0x00 , 0x02 , 0x00 , 0x01 , 0x80 , 0x40 , 0x82 , 0x22 };
155
+
156
+ const io::StreamInputView stream_view{doc_raw, sizeof (doc_raw)};
157
+
158
+ message_20::Variant variant (io::v2gtp::PayloadType::Part20Main, stream_view);
159
+
160
+ THEN (" It should be decoded successfully" ) {
161
+
162
+ REQUIRE (variant.get_type () == message_20::Type::ServiceDiscoveryRes);
163
+
164
+ const auto & msg = variant.get <message_20::ServiceDiscoveryResponse>();
165
+ const auto & header = msg.header ;
166
+
167
+ REQUIRE (header.session_id == std::array<uint8_t , 8 >{0x3D , 0x4C , 0xBF , 0x93 , 0x37 , 0x4E , 0xD8 , 0x9B });
168
+ REQUIRE (header.timestamp == 1725456322 );
169
+ REQUIRE (msg.response_code == message_20::datatypes::ResponseCode::OK);
170
+ REQUIRE (msg.service_renegotiation_supported == false );
171
+ REQUIRE (msg.energy_transfer_service_list .size () == 2 );
172
+ REQUIRE (msg.energy_transfer_service_list [0 ].service_id == message_20::datatypes::ServiceCategory::DC);
173
+ REQUIRE (msg.energy_transfer_service_list [0 ].free_service == false );
174
+ REQUIRE (msg.energy_transfer_service_list [1 ].service_id == message_20::datatypes::ServiceCategory::DC_BPT);
175
+ REQUIRE (msg.energy_transfer_service_list [1 ].free_service == false );
176
+ REQUIRE (msg.vas_list .value ().size () == 1 );
177
+ REQUIRE (msg.vas_list .value ()[0 ].service_id == message_20::datatypes::ServiceCategory::Internet);
178
+ REQUIRE (msg.vas_list .value ()[0 ].free_service == true );
179
+ }
180
+ }
52
181
}
0 commit comments