Skip to content

Commit 062a351

Browse files
committed
Add reusable the encoder and decoder test class
1 parent a95a09c commit 062a351

File tree

4 files changed

+121
-111
lines changed

4 files changed

+121
-111
lines changed

tests/encoder_decoder_test.cpp

Lines changed: 13 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,16 @@
11
#include "catch.hpp"
22
#include <mfast.h>
3-
#include <mfast/coder/fast_encoder.h>
4-
#include <mfast/coder/fast_decoder.h>
3+
4+
#include "fast_test_coding_case.hpp"
55
#include "byte_stream.h"
66

77
#include "simple12.h"
88

9-
namespace
10-
{
11-
class fast_test_coding_case
12-
{
13-
public:
14-
fast_test_coding_case()
15-
{
16-
encoder_.include({simple12::description()});
17-
decoder_.include({simple12::description()});
18-
}
19-
20-
bool encoding(const mfast::message_cref& msg_ref, const byte_stream& result, bool reset=false)
21-
{
22-
const int buffer_size = 128;
23-
char buffer[buffer_size];
24-
25-
std::size_t encoded_size = encoder_.encode(msg_ref,
26-
buffer,
27-
buffer_size,
28-
reset);
29-
30-
if (result == byte_stream(buffer, encoded_size))
31-
return true;
32-
33-
std::cout << byte_stream(buffer, encoded_size);
34-
35-
INFO( "Got \"" << byte_stream(buffer, encoded_size) << "\" instead." );
36-
return false;
37-
}
38-
39-
bool decoding(const byte_stream& bytes, const mfast::message_cref& result, bool reset=false)
40-
{
41-
const char* first = bytes.data();
42-
mfast::message_cref msg = decoder_.decode(first, first+bytes.size(), reset);
43-
44-
return (msg == result);
45-
}
46-
47-
private:
48-
mfast::fast_encoder encoder_;
49-
mfast::fast_decoder decoder_;
50-
};
51-
}
9+
using namespace test::coding;
5210

53-
TEST_CASE("simple field and sequence optional encoder","[field_sequence_optional_sequence_encoder]")
11+
TEST_CASE("simple field and sequence optional encoder/decoder","[field_sequence_optional_encoder_decoder]")
5412
{
55-
fast_test_coding_case test_case;
13+
fast_test_coding_case<simple12::templates_description> test_case;
5614

5715
SECTION("encode field")
5816
{
@@ -110,9 +68,9 @@ TEST_CASE("simple field and sequence optional encoder","[field_sequence_optional
11068
}
11169
}
11270

113-
TEST_CASE("simple field encoder","[field_optional_encoder]")
71+
TEST_CASE("simple field encoder/decoder","[field_optional_encoder_decoder]")
11472
{
115-
fast_test_coding_case test_case;
73+
fast_test_coding_case<simple12::templates_description> test_case;
11674

11775
SECTION("encode fields")
11876
{
@@ -130,9 +88,9 @@ TEST_CASE("simple field encoder","[field_optional_encoder]")
13088
}
13189
}
13290

133-
TEST_CASE("simple field and sequence encoder","[field_sequence_encoder]")
91+
TEST_CASE("simple field and sequence encoder/decoder","[field_sequence_encoder_decoder]")
13492
{
135-
fast_test_coding_case test_case;
93+
fast_test_coding_case<simple12::templates_description> test_case;
13694

13795
SECTION("encode fields")
13896
{
@@ -156,9 +114,9 @@ TEST_CASE("simple field and sequence encoder","[field_sequence_encoder]")
156114
}
157115
}
158116

159-
TEST_CASE("simple field optional encoder","[field_optional_encoder]")
117+
TEST_CASE("simple field optional encoder/decoder","[field_optional_encoder_decoder]")
160118
{
161-
fast_test_coding_case test_case;
119+
fast_test_coding_case<simple12::templates_description> test_case;
162120

163121
SECTION("encode fields")
164122
{
@@ -204,9 +162,9 @@ TEST_CASE("simple field optional encoder","[field_optional_encoder]")
204162
}
205163
}
206164

207-
TEST_CASE("simple field group optional encoder","[field_group_optional_encoder]")
165+
TEST_CASE("simple field group optional encoder/decoder","[field_group_optional_encoder_decoder]")
208166
{
209-
fast_test_coding_case test_case;
167+
fast_test_coding_case<simple12::templates_description> test_case;
210168

211169
SECTION("encode field")
212170
{

tests/encoder_decoder_test_v2.cpp

Lines changed: 13 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,16 @@
11
#include "catch.hpp"
22
#include <mfast.h>
3-
#include <mfast/coder/fast_encoder_v2.h>
4-
#include <mfast/coder/fast_decoder_v2.h>
53

4+
#include "fast_test_coding_case_v2.hpp"
65
#include "byte_stream.h"
76

87
#include "simple12.h"
98

10-
namespace
11-
{
12-
class fast_test_coding_case_v2
13-
{
14-
public:
15-
fast_test_coding_case_v2():
16-
encoder_v2_(simple12::description()),
17-
decoder_v2_(simple12::description())
18-
{}
19-
20-
bool
21-
encoding(const mfast::message_cref& msg_ref, const byte_stream& result, bool reset=false)
22-
{
23-
const int buffer_size = 128;
24-
char buffer[buffer_size];
25-
26-
std::size_t encoded_size = encoder_v2_.encode(msg_ref, buffer, buffer_size, reset);
27-
if (result == byte_stream(buffer, encoded_size))
28-
return true;
29-
30-
INFO( "Got \"" << byte_stream(buffer, encoded_size) << "\" instead." );
31-
return false;
32-
}
33-
34-
bool
35-
decoding(const byte_stream& bytes, const mfast::message_cref& result, bool reset=false)
36-
{
37-
const char* first = bytes.data();
38-
mfast::message_cref msg = decoder_v2_.decode(first, first+bytes.size(), reset);
9+
using namespace test::coding;
3910

40-
return (msg == result);
41-
}
42-
43-
private:
44-
mfast::fast_encoder_v2 encoder_v2_;
45-
mfast::fast_decoder_v2<0> decoder_v2_;
46-
};
47-
}
48-
49-
TEST_CASE("simple field and sequence optional encoder_v2","[field_sequence_optional_sequence_encoder_v2]")
11+
TEST_CASE("simple field and sequence optional encoder_v2/decoder_v2","[field_sequence_optional_sequence_encoder_v2_decoder2]")
5012
{
51-
fast_test_coding_case_v2 test_case;
13+
fast_test_coding_case_v2<simple12::templates_description> test_case;
5214

5315
SECTION("encode field")
5416
{
@@ -106,9 +68,9 @@ TEST_CASE("simple field and sequence optional encoder_v2","[field_sequence_optio
10668
}
10769
}
10870

109-
TEST_CASE("simple field encoder_v2","[field_optional_encoder_v2]")
71+
TEST_CASE("simple field encoder_v2/decoder_v2","[field_optional_encoder_v2]")
11072
{
111-
fast_test_coding_case_v2 test_case;
73+
fast_test_coding_case_v2<simple12::templates_description> test_case;
11274

11375
SECTION("encode fields")
11476
{
@@ -126,9 +88,9 @@ TEST_CASE("simple field encoder_v2","[field_optional_encoder_v2]")
12688
}
12789
}
12890

129-
TEST_CASE("simple field and sequence encoder_v2","[field_sequence_encoder_v2]")
91+
TEST_CASE("simple field and sequence encoder_v2/decoder_v2","[field_sequence_encoder_v2_decoder_v2]")
13092
{
131-
fast_test_coding_case_v2 test_case;
93+
fast_test_coding_case_v2<simple12::templates_description> test_case;
13294

13395
SECTION("encode fields")
13496
{
@@ -152,9 +114,9 @@ TEST_CASE("simple field and sequence encoder_v2","[field_sequence_encoder_v2]")
152114
}
153115
}
154116

155-
TEST_CASE("simple field optional encoder_v2","[field__optional_encoder_v2]")
117+
TEST_CASE("simple field optional encoder_v2/decoder_v2","[field__optional_encoder_v2_decoder_v2]")
156118
{
157-
fast_test_coding_case_v2 test_case;
119+
fast_test_coding_case_v2<simple12::templates_description> test_case;
158120

159121
SECTION("encode fields")
160122
{
@@ -200,25 +162,20 @@ TEST_CASE("simple field optional encoder_v2","[field__optional_encoder_v2]")
200162
}
201163
}
202164

203-
TEST_CASE("simple field group optional encoder_v2","[field_group_optional_encoder_v2]")
165+
TEST_CASE("simple field group optional encoder_v2/decoder_v2","[field_group_optional_encoder_v2_decoder_v2]")
204166
{
205-
fast_test_coding_case_v2 test_case;
167+
fast_test_coding_case_v2<simple12::templates_description> test_case;
206168

207169
SECTION("encode field")
208170
{
209171
simple12::Test_5 test_5;
210172
simple12::Test_5_mref test_5_mref = test_5.mref();
211173
test_5_mref.set_field_5_1().as(1);
212-
// Error: Expecting value is \xE0 : 1110
174+
// \xE0 : 1110 : OK
213175
// 1 : Stop Bit.
214176
// 1 : Set Template Id.
215177
// 1 : Set Field field_5_1
216178
// 0 : Not Set test_5_group
217-
// Get value: F0, expecting E0
218-
// 1 : Stop Bit.
219-
// 1 : Set Template Id.
220-
// 1 : Set Field field_5_1
221-
// 1 : Set test_5_group -> False!
222179
REQUIRE(test_case.encoding(test_5.cref(),"\xE0\x85\x82",true));
223180
REQUIRE(test_case.decoding("\xE0\x85\x82",test_5.cref(),true));
224181
}

tests/fast_test_coding_case.hpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#pragma once
2+
3+
#include <mfast.h>
4+
#include <mfast/coder/fast_encoder.h>
5+
#include <mfast/coder/fast_decoder.h>
6+
#include "byte_stream.h"
7+
8+
namespace test::coding
9+
{
10+
template<typename DESC>
11+
class fast_test_coding_case
12+
{
13+
public:
14+
fast_test_coding_case()
15+
{
16+
encoder_.include({DESC::instance()});
17+
decoder_.include({DESC::instance()});
18+
}
19+
20+
bool encoding(const mfast::message_cref& msg_ref, const byte_stream& result, bool reset=false)
21+
{
22+
const int buffer_size = 128;
23+
char buffer[buffer_size];
24+
25+
std::size_t encoded_size = encoder_.encode(msg_ref,
26+
buffer,
27+
buffer_size,
28+
reset);
29+
30+
if (result == byte_stream(buffer, encoded_size))
31+
return true;
32+
33+
INFO( "Got \"" << byte_stream(buffer, encoded_size) << "\" instead." );
34+
return false;
35+
}
36+
37+
bool decoding(const byte_stream& bytes, const mfast::message_cref& result, bool reset=false)
38+
{
39+
const char* first = bytes.data();
40+
mfast::message_cref msg = decoder_.decode(first, first+bytes.size(), reset);
41+
42+
return (msg == result);
43+
}
44+
45+
private:
46+
mfast::fast_encoder encoder_;
47+
mfast::fast_decoder decoder_;
48+
};
49+
}

tests/fast_test_coding_case_v2.hpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#pragma once
2+
3+
#include <mfast.h>
4+
#include <mfast/coder/fast_encoder_v2.h>
5+
#include <mfast/coder/fast_decoder_v2.h>
6+
#include "byte_stream.h"
7+
8+
namespace test::coding
9+
{
10+
template<typename DESC>
11+
class fast_test_coding_case_v2
12+
{
13+
public:
14+
fast_test_coding_case_v2():
15+
encoder_v2_(DESC::instance()),
16+
decoder_v2_(DESC::instance())
17+
{}
18+
19+
bool
20+
encoding(const mfast::message_cref& msg_ref, const byte_stream& result, bool reset=false)
21+
{
22+
const int buffer_size = 128;
23+
char buffer[buffer_size];
24+
25+
std::size_t encoded_size = encoder_v2_.encode(msg_ref, buffer, buffer_size, reset);
26+
if (result == byte_stream(buffer, encoded_size))
27+
return true;
28+
29+
INFO( "Got \"" << byte_stream(buffer, encoded_size) << "\" instead." );
30+
return false;
31+
}
32+
33+
bool
34+
decoding(const byte_stream& bytes, const mfast::message_cref& result, bool reset=false)
35+
{
36+
const char* first = bytes.data();
37+
mfast::message_cref msg = decoder_v2_.decode(first, first+bytes.size(), reset);
38+
39+
return (msg == result);
40+
}
41+
42+
private:
43+
mfast::fast_encoder_v2 encoder_v2_;
44+
mfast::fast_decoder_v2<0> decoder_v2_;
45+
};
46+
}

0 commit comments

Comments
 (0)