Skip to content

Commit 6cb6444

Browse files
committed
Unit test for the empty default value
1 parent b0703c7 commit 6cb6444

8 files changed

Lines changed: 157 additions & 2 deletions

tests/enum_encoder_decoder.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,33 @@ TEST_CASE("enum test copy encoder/decoder","[enum_copy_encoder_decoder]")
2727
REQUIRE(test_case.encoding(test_3.cref(),"\xE0\x83\x83",true));
2828
REQUIRE(test_case.decoding("\xE0\x83\x83",test_3.cref(),true));
2929
}
30+
31+
TEST_CASE("optional value present in enum with default encoder/decoder","[optional_preset_enum_default_encoder_decoder]")
32+
{
33+
fast_test_coding_case<simple16::templates_description> test_case;
34+
simple16::Test_4 test_4;
35+
simple16::Test_4_mref test_4_mref = test_4.mref();
36+
test_4_mref.set_discrete().as_Three();
37+
REQUIRE(test_4.cref().get_discrete().present());
38+
// \xE0 : 1110 : OK
39+
// 1 : Stop Bit.
40+
// 1 : Set Template Id.
41+
// 1 : Set Field discrete
42+
// 0 : Not used
43+
REQUIRE(test_case.encoding(test_4.cref(),"\xE0\x84\x84", true));
44+
REQUIRE(test_case.decoding("\xE0\x84\x84",test_4.cref(), true));
45+
}
46+
47+
TEST_CASE("optional value not present in enum with default encoder/decoder","[optional_preset_enum_default_encoder_decoder]")
48+
{
49+
fast_test_coding_case<simple16::templates_description> test_case;
50+
simple16::Test_4 test_4;
51+
REQUIRE(!test_4.cref().get_discrete().present());
52+
// \xC0 : 1100 : OK
53+
// 1 : Stop Bit.
54+
// 1 : Set Template Id.
55+
// 0 : Not Set Field discrete
56+
// 0 : Not used
57+
REQUIRE(test_case.encoding(test_4.cref(),"\xC0\x84", true));
58+
REQUIRE(test_case.decoding("\xC0\x84",test_4.cref(), true));
59+
}

tests/enum_encoder_decoder_v2.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,22 @@ TEST_CASE("enum test copy encoder_V2/decoder_v2","[enum_copy_encoder_v2_decoder_
2727
REQUIRE(test_case.encoding(test_3.cref(),"\xE0\x83\x83",true));
2828
REQUIRE(test_case.decoding("\xE0\x83\x83",test_3.cref(),true));
2929
}
30+
31+
TEST_CASE("optional value present in enum with default encoder_V2/decoder_v2","[optional_preset_enum_default_encoder_v2_decoder_v2]")
32+
{
33+
fast_test_coding_case_v2<simple16::templates_description> test_case;
34+
simple16::Test_4 test_4;
35+
simple16::Test_4_mref test_4_mref = test_4.mref();
36+
test_4_mref.set_discrete().as_Three();
37+
REQUIRE(test_case.encoding(test_4.cref(),"\xE0\x84\x84", true));
38+
REQUIRE(test_case.decoding("\xE0\x84\x84",test_4.cref(), true));
39+
}
40+
41+
TEST_CASE("optional value not present in enum with default encoder_V2/decoder_v2","[optional_preset_enum_default_encoder_v2_decoder_v2]")
42+
{
43+
fast_test_coding_case_v2<simple16::templates_description> test_case;
44+
simple16::Test_4 test_4;
45+
REQUIRE(!test_4.cref().get_discrete().present());
46+
REQUIRE(test_case.encoding(test_4.cref(),"\xC0\x84", true));
47+
REQUIRE(test_case.decoding("\xC0\x84",test_4.cref(), true));
48+
}

tests/set_encoder_decoder.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,29 @@ TEST_CASE("set encoder/decoder","[set_encoder_decoder]")
2323
REQUIRE(test_case.encoding(test_1.cref(),"\xF0\x81\x8A\x94",true));
2424
REQUIRE(test_case.decoding("\xF0\x81\x8A\x94",test_1.cref(),true));
2525
}
26+
27+
TEST_CASE("set optional field encoder/decoder","[set_optional_encoder_decoder]")
28+
{
29+
SECTION("optional field present")
30+
{
31+
fast_test_coding_case<simple19::templates_description> test_case;
32+
simple19::Test_3 test_3;
33+
simple19::Test_3_mref test_3_mref = test_3.mref();
34+
test_3_mref.set_field3().as(10);
35+
test_3_mref.set_TradeCondition().set_VolumeOnly();
36+
REQUIRE(test_3.cref().get_TradeCondition().present());
37+
REQUIRE(test_case.encoding(test_3.cref(), "\xF0\x83\x8A\x02\x81", true));
38+
REQUIRE(test_case.decoding("\xF0\x83\x8A\x02\x81", test_3.cref(), true));
39+
}
40+
41+
SECTION("optional field not present")
42+
{
43+
fast_test_coding_case<simple19::templates_description> test_case;
44+
simple19::Test_3 test_3;
45+
simple19::Test_3_mref test_3_mref = test_3.mref();
46+
test_3_mref.set_field3().as(10);
47+
REQUIRE(!test_3.cref().get_TradeCondition().present());
48+
REQUIRE(test_case.encoding(test_3.cref(), "\xE0\x83\x8A", true));
49+
REQUIRE(test_case.decoding("\xE0\x83\x8A", test_3.cref(), true));
50+
}
51+
}

tests/set_encoder_decoder_v2.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,29 @@ TEST_CASE("set encoder_V2/decoder_v2","[set_encoder_v2_decoder_v2]")
2323
REQUIRE(test_case.encoding(test_1.cref(),"\xF0\x81\x8A\x94",true));
2424
REQUIRE(test_case.decoding("\xF0\x81\x8A\x94",test_1.cref(),true));
2525
}
26+
27+
TEST_CASE("set optional field encoder_V2/decoder_v2","[set_optional_encoder_v2_decoder_v2]")
28+
{
29+
SECTION("optional field present")
30+
{
31+
fast_test_coding_case_v2<simple19::templates_description> test_case;
32+
simple19::Test_3 test_3;
33+
simple19::Test_3_mref test_3_mref = test_3.mref();
34+
test_3_mref.set_field3().as(10);
35+
test_3_mref.set_TradeCondition().set_VolumeOnly();
36+
REQUIRE(test_3.cref().get_TradeCondition().present());
37+
REQUIRE(test_case.encoding(test_3.cref(), "\xF0\x83\x8A\x02\x81", true));
38+
REQUIRE(test_case.decoding("\xF0\x83\x8A\x02\x81", test_3.cref(), true));
39+
}
40+
41+
SECTION("optional field not present")
42+
{
43+
fast_test_coding_case_v2<simple19::templates_description> test_case;
44+
simple19::Test_3 test_3;
45+
simple19::Test_3_mref test_3_mref = test_3.mref();
46+
test_3_mref.set_field3().as(10);
47+
REQUIRE(!test_3.cref().get_TradeCondition().present());
48+
REQUIRE(test_case.encoding(test_3.cref(), "\xE0\x83\x8A", true));
49+
REQUIRE(test_case.decoding("\xE0\x83\x8A", test_3.cref(), true));
50+
}
51+
}

tests/simple16.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,8 @@
2222
<string name="MsgType" id="35"><constant value="HP"/></string>
2323
<field name="discrete" id="2477"><type name="DiscreteEnum"><copy/></type></field>
2424
</template>
25+
<template name="Test_4" id="4">
26+
<string name="MsgType" id="35"><constant value="HP"/></string>
27+
<field name="discrete" id="2477"><type name="DiscreteEnum" presence="optional"><default/></type></field>
28+
</template>
2529
</templates>

tests/simple18.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,8 @@
2727
<string name="MsgType" id="36"><constant value="DQ"/></string>
2828
<field name="MDStatisticIntervalUnit" id="2467"><type name="TypeUnit"><default value="3"/></type></field>
2929
</template>
30+
<template name="Test_3" id="3">
31+
<string name="MsgType" id="36"><constant value="EQ"/></string>
32+
<field name="MDStatisticIntervalUnit" id="2467" presence="optional"><type name="TypeUnit"><default/></type></field>
33+
</template>
3034
</templates>

tests/xetra_enum_encoder_decoder.cpp

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,27 @@ TEST_CASE("xetra enum test encoder/decoder","[xetra_enum_encoder_decoder]")
4040
REQUIRE(test_case.encoding(test_1.cref(),"\xe0\x81\x81\x83",true));
4141
REQUIRE(test_case.decoding("\xe0\x81\x81\x83",test_1.cref(),true));
4242
}
43-
}
43+
}
44+
45+
TEST_CASE("xetra enum optional test encoder/decoder","[xetra_enum_encoder_decoder]")
46+
{
47+
SECTION("enum optional present")
48+
{
49+
fast_test_coding_case<simple18::templates_description> test_case;
50+
simple18::Test_3 test_3;
51+
simple18::Test_3_mref test_3_mref = test_3.mref();
52+
test_3_mref.set_MDStatisticIntervalUnit().as_MilliSeconds();
53+
REQUIRE(test_3.cref().get_MDStatisticIntervalUnit().present());
54+
REQUIRE(test_case.encoding(test_3.cref(), "\xE0\x83\x82", true));
55+
REQUIRE(test_case.decoding("\xE0\x83\x82", test_3.cref(), true));
56+
}
57+
58+
SECTION("enum optional not present")
59+
{
60+
fast_test_coding_case<simple18::templates_description> test_case;
61+
simple18::Test_3 test_3;
62+
REQUIRE(!test_3.cref().get_MDStatisticIntervalUnit().present());
63+
REQUIRE(test_case.encoding(test_3.cref(), "\xC0\x83", true));
64+
REQUIRE(test_case.decoding("\xC0\x83", test_3.cref(), true));
65+
}
66+
}

tests/xetra_enum_encoder_decoder_v2.cpp

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,27 @@ TEST_CASE("xetra enum test encoder_V2/decoder_v2","[xetra_enum_encoder_v2_decode
4040
REQUIRE(test_case.encoding(test_1.cref(),"\xe0\x81\x81\x83",true));
4141
REQUIRE(test_case.decoding("\xe0\x81\x81\x83",test_1.cref(),true));
4242
}
43-
}
43+
}
44+
45+
TEST_CASE("xetra enum optional test encoder_V2/decoder_v2","[xetra_enum_optional_encoder_v2_decoder_v2]")
46+
{
47+
SECTION("enum optional present")
48+
{
49+
fast_test_coding_case_v2<simple18::templates_description> test_case;
50+
simple18::Test_3 test_3;
51+
simple18::Test_3_mref test_3_mref = test_3.mref();
52+
test_3_mref.set_MDStatisticIntervalUnit().as_MilliSeconds();
53+
REQUIRE(test_3.cref().get_MDStatisticIntervalUnit().present());
54+
REQUIRE(test_case.encoding(test_3.cref(), "\xE0\x83\x82", true));
55+
REQUIRE(test_case.decoding("\xE0\x83\x82", test_3.cref(), true));
56+
}
57+
58+
SECTION("enum optional not present")
59+
{
60+
fast_test_coding_case_v2<simple18::templates_description> test_case;
61+
simple18::Test_3 test_3;
62+
REQUIRE(!test_3.cref().get_MDStatisticIntervalUnit().present());
63+
REQUIRE(test_case.encoding(test_3.cref(), "\xC0\x83", true));
64+
REQUIRE(test_case.decoding("\xC0\x83", test_3.cref(), true));
65+
}
66+
}

0 commit comments

Comments
 (0)