Skip to content

Commit f0476d3

Browse files
Refs #22202. Add tests
Signed-off-by: Juan Lopez Fernandez <juanlopez@eprosima.com>
1 parent 324b27d commit f0476d3

9 files changed

Lines changed: 421 additions & 175 deletions

test/feature/dynamic_types/DynamicTypesTests.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <fastdds/dds/xtypes/dynamic_types/DynamicTypeBuilderFactory.hpp>
3030
#include <fastdds/dds/xtypes/dynamic_types/MemberDescriptor.hpp>
3131
#include <fastdds/dds/xtypes/dynamic_types/TypeDescriptor.hpp>
32+
#include <fastdds/dds/xtypes/utils.hpp>
3233
#include <ScopedLogs.hpp>
3334

3435
using namespace eprosima::fastdds::rtps;
@@ -48,11 +49,35 @@ void encoding_decoding_test(
4849
static_cast<uint32_t>(pubsubType.calculate_serialized_size(&encoding_data, encoding));
4950
SerializedPayload_t payload(payloadSize);
5051
EXPECT_TRUE(pubsubType.serialize(&encoding_data, payload, encoding));
52+
5153
EXPECT_EQ(payload.length, payloadSize);
5254
EXPECT_LE(payload.length, pubsubType->max_serialized_type_size);
5355
EXPECT_TRUE(pubsubType.deserialize(payload, &decoding_data));
5456
EXPECT_TRUE(decoding_data->equals(encoding_data));
5557

58+
// Test JSON serialization and deserialization for struct types
59+
if (TK_STRUCTURE == created_type->get_kind())
60+
{
61+
std::vector<DynamicDataJsonFormat> format_options = {DynamicDataJsonFormat::EPROSIMA, DynamicDataJsonFormat::OMG};
62+
for (const auto& format_kind : format_options)
63+
{
64+
std::stringstream generated_json;
65+
EXPECT_EQ(json_serialize(
66+
encoding_data,
67+
format_kind,
68+
generated_json), RETCODE_OK);
69+
70+
DynamicData::_ref_type data_from_json;
71+
EXPECT_EQ(json_deserialize(
72+
generated_json.str(),
73+
created_type,
74+
format_kind,
75+
data_from_json), RETCODE_OK);
76+
77+
EXPECT_TRUE(encoding_data->equals(data_from_json));
78+
}
79+
}
80+
5681
DomainParticipant* participant = DomainParticipantFactory::get_instance()->create_participant(
5782
0, PARTICIPANT_QOS_DEFAULT);
5883
if (0 == created_type->get_name().size())

test/unittest/dds/xtypes/serializers/json/DynDataJSONTests.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,28 @@ void test_generic()
5959

6060
ASSERT_NE(dyn_data, nullptr);
6161

62+
// Test DynamicData to JSON serialization
6263
std::stringstream generated_json;
6364
generated_json << std::setw(4);
64-
const auto ret = json_serialize(
65+
auto ret = json_serialize(
6566
dyn_data,
6667
format_kind,
6768
generated_json);
69+
EXPECT_EQ(ret, RETCODE_OK);
70+
EXPECT_EQ(generated_json.str(), get_expected_json<Data>(format_kind, filled, fill_index));
6871

69-
ASSERT_EQ(ret, RETCODE_OK);
70-
ASSERT_EQ(generated_json.str(), get_expected_json<Data>(format_kind, filled, fill_index));
72+
// Test JSON to DynamicData deserialization
73+
DynamicData::_ref_type dyn_data_from_json;
74+
ret = json_deserialize(
75+
generated_json.str(),
76+
dyn_type,
77+
format_kind,
78+
dyn_data_from_json);
79+
EXPECT_EQ(ret, RETCODE_OK);
80+
81+
// Check that the deserialized DynamicData matches the original
82+
ASSERT_NE(dyn_data_from_json, nullptr);
83+
EXPECT_TRUE(dyn_data->equals(dyn_data_from_json));
7184
}
7285
}
7386
}

test/unittest/dds/xtypes/serializers/json/types/comprehensive_type/implementation/ComprehensiveTypeImpl.cpp

Lines changed: 140 additions & 72 deletions
Large diffs are not rendered by default.

test/unittest/dds/xtypes/serializers/json/types/comprehensive_type/json/ComprehensiveType_Filled_EPROSIMA_1.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
"my_long": 1,
8181
"my_longdouble": 0.5,
8282
"my_longlong": 1,
83-
"my_octet": 0,
83+
"my_octet": 1,
8484
"my_short": 1,
8585
"my_uint8": 1,
8686
"my_ulong": 1,
@@ -115,7 +115,7 @@
115115
"my_long": 1,
116116
"my_longdouble": 0.5,
117117
"my_longlong": 1,
118-
"my_octet": 0,
118+
"my_octet": 1,
119119
"my_recursive_alias": {
120120
"name": "B",
121121
"value": 1
@@ -222,7 +222,7 @@
222222
"my_long": 1,
223223
"my_longdouble": 0.5,
224224
"my_longlong": 1,
225-
"my_octet": 0,
225+
"my_octet": 1,
226226
"my_short": 1,
227227
"my_uint8": 1,
228228
"my_ulong": 1,
@@ -257,7 +257,7 @@
257257
"my_long": 1,
258258
"my_longdouble": 0.5,
259259
"my_longlong": 1,
260-
"my_octet": 0,
260+
"my_octet": 1,
261261
"my_recursive_alias": {
262262
"name": "B",
263263
"value": 1
@@ -366,7 +366,7 @@
366366
"my_long": 1,
367367
"my_longdouble": 0.5,
368368
"my_longlong": 1,
369-
"my_octet": 0,
369+
"my_octet": 1,
370370
"my_short": 1,
371371
"my_uint8": 1,
372372
"my_ulong": 1,
@@ -401,7 +401,7 @@
401401
"my_long": 1,
402402
"my_longdouble": 0.5,
403403
"my_longlong": 1,
404-
"my_octet": 0,
404+
"my_octet": 1,
405405
"my_recursive_alias": {
406406
"name": "B",
407407
"value": 1
@@ -510,7 +510,7 @@
510510
"my_long": 1,
511511
"my_longdouble": 0.5,
512512
"my_longlong": 1,
513-
"my_octet": 0,
513+
"my_octet": 1,
514514
"my_short": 1,
515515
"my_uint8": 1,
516516
"my_ulong": 1,
@@ -545,7 +545,7 @@
545545
"my_long": 1,
546546
"my_longdouble": 0.5,
547547
"my_longlong": 1,
548-
"my_octet": 0,
548+
"my_octet": 1,
549549
"my_recursive_alias": {
550550
"name": "B",
551551
"value": 1
@@ -654,7 +654,7 @@
654654
"my_long": 1,
655655
"my_longdouble": 0.5,
656656
"my_longlong": 1,
657-
"my_octet": 0,
657+
"my_octet": 1,
658658
"my_short": 1,
659659
"my_uint8": 1,
660660
"my_ulong": 1,
@@ -689,7 +689,7 @@
689689
"my_long": 1,
690690
"my_longdouble": 0.5,
691691
"my_longlong": 1,
692-
"my_octet": 0,
692+
"my_octet": 1,
693693
"my_recursive_alias": {
694694
"name": "B",
695695
"value": 1

0 commit comments

Comments
 (0)