Skip to content

Commit 9d78ab1

Browse files
committed
Add unit test for the case of the group presence
1 parent 07a1626 commit 9d78ab1

File tree

4 files changed

+87
-4
lines changed

4 files changed

+87
-4
lines changed

tests/fast_test_coding_case_v2.hpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ class fast_test_coding_case_v2
1818
decoder_v2_(DESC::instance())
1919
{}
2020

21-
bool
22-
encoding(const mfast::message_cref& msg_ref, const byte_stream& result, bool reset=false)
21+
bool encoding(const mfast::message_cref& msg_ref, const byte_stream& result, bool reset=false)
2322
{
2423
const int buffer_size = 128;
2524
char buffer[buffer_size];
@@ -32,8 +31,7 @@ class fast_test_coding_case_v2
3231
return false;
3332
}
3433

35-
bool
36-
decoding(const byte_stream& bytes, const mfast::message_cref& result, bool reset=false)
34+
bool decoding(const byte_stream& bytes, const mfast::message_cref& result, bool reset=false)
3735
{
3836
const char* first = bytes.data();
3937
mfast::message_cref msg = decoder_v2_.decode(first, first+bytes.size(), reset);

tests/sequence_encoder_decoder.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,3 +237,41 @@ TEST_CASE("group sequence inside sequence encoder/decoder","[group_sequence_insi
237237
REQUIRE(test_case.decoding("\xC0\x86\x81\xD0\xB2\x82\xB2",test_6.cref(),true));
238238
}
239239
}
240+
241+
TEST_CASE("sequence with optional group encoder/decoder","[sequence_optional_group_encoder_decoder]")
242+
{
243+
fast_test_coding_case<simple14::templates_description> test_case;
244+
245+
SECTION("group not present")
246+
{
247+
simple14::Test_7 test_7;
248+
simple14::Test_7_mref test_7_mref = test_7.mref();
249+
250+
auto sequence_7_mref = test_7_mref.set_sequence_7();
251+
sequence_7_mref.resize(1);
252+
253+
auto element_sequence = sequence_7_mref.front();
254+
element_sequence.set_field_7_3().as(50);
255+
256+
REQUIRE(test_case.encoding(test_7.cref(),"\xC0\x87\x81\xC0\xB2",true));
257+
REQUIRE(test_case.decoding("\xC0\x87\x81\xC0\xB2",test_7.cref(),true));
258+
}
259+
260+
SECTION("group present")
261+
{
262+
simple14::Test_7 test_7;
263+
simple14::Test_7_mref test_7_mref = test_7.mref();
264+
265+
auto sequence_7_mref = test_7_mref.set_sequence_7();
266+
sequence_7_mref.resize(1);
267+
268+
auto element_sequence = sequence_7_mref.front();
269+
element_sequence.set_field_7_3().as(50);
270+
271+
auto group_7 = element_sequence.set_group_7();
272+
group_7.set_field_7_4().as(20);
273+
274+
REQUIRE(test_case.encoding(test_7.cref(),"\xC0\x87\x81\xE0\xB2\x94",true));
275+
REQUIRE(test_case.decoding("\xC0\x87\x81\xE0\xB2\x94",test_7.cref(),true));
276+
}
277+
}

tests/sequence_encoder_decoder_v2.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,3 +239,41 @@ TEST_CASE("group sequence inside sequence encoder_V2/decoder_v2","[group_sequenc
239239
REQUIRE(test_case.decoding("\xC0\x86\x81\xD0\xB2\x82\xB2",test_6.cref(),true));
240240
}
241241
}
242+
243+
TEST_CASE("sequence with optional group encoder_V2/decoder_v2","[sequence_optional_group_encoder_v2_decoder_v2]")
244+
{
245+
fast_test_coding_case_v2<simple14::templates_description> test_case;
246+
247+
SECTION("group not present")
248+
{
249+
simple14::Test_7 test_7;
250+
simple14::Test_7_mref test_7_mref = test_7.mref();
251+
252+
auto sequence_7_mref = test_7_mref.set_sequence_7();
253+
sequence_7_mref.resize(1);
254+
255+
auto element_sequence = sequence_7_mref.front();
256+
element_sequence.set_field_7_3().as(50);
257+
258+
REQUIRE(test_case.encoding(test_7.cref(),"\xC0\x87\x81\xC0\xB2",true));
259+
REQUIRE(test_case.decoding("\xC0\x87\x81\xC0\xB2",test_7.cref(),true));
260+
}
261+
262+
SECTION("group present")
263+
{
264+
simple14::Test_7 test_7;
265+
simple14::Test_7_mref test_7_mref = test_7.mref();
266+
267+
auto sequence_7_mref = test_7_mref.set_sequence_7();
268+
sequence_7_mref.resize(1);
269+
270+
auto element_sequence = sequence_7_mref.front();
271+
element_sequence.set_field_7_3().as(50);
272+
273+
auto group_7 = element_sequence.set_group_7();
274+
group_7.set_field_7_4().as(20);
275+
276+
REQUIRE(test_case.encoding(test_7.cref(),"\xC0\x87\x81\xE0\xB2\x94",true));
277+
REQUIRE(test_case.decoding("\xC0\x87\x81\xE0\xB2\x94",test_7.cref(),true));
278+
}
279+
}

tests/simple14.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,13 @@
5454
</sequence>
5555
</group>
5656
</template>
57+
<template name="Test_7" id="7">
58+
<sequence name="sequence_7">
59+
<length name="field_7_2" id="72"></length>
60+
<uInt32 name="field_7_3" id="73"><copy/></uInt32>
61+
<group name="group_7" presence="optional">
62+
<uInt32 name="field_7_4" id="74"/>
63+
</group>
64+
</sequence>
65+
</template>
5766
</templates>

0 commit comments

Comments
 (0)