From fa4597c1f16a2d72ad3afe1890f503f72b495a4b Mon Sep 17 00:00:00 2001 From: Alberto Tudela Date: Tue, 8 Apr 2025 11:01:08 +0200 Subject: [PATCH 1/3] Vector test Signed-off-by: Alberto Tudela --- tests/gtest_json.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests/gtest_json.cpp b/tests/gtest_json.cpp index f7b9e5909..03706bb0f 100644 --- a/tests/gtest_json.cpp +++ b/tests/gtest_json.cpp @@ -80,6 +80,7 @@ class JsonTest : public testing::Test { BT::JsonExporter& exporter = BT::JsonExporter::get(); exporter.addConverter(); + exporter.addConverter>(); exporter.addConverter(); exporter.addConverter(); @@ -195,3 +196,64 @@ TEST_F(JsonTest, BlackboardInOut) ASSERT_EQ(vect_out.y, 2.2); ASSERT_EQ(vect_out.z, 3.3); } + +TEST_F(JsonTest, VectorOfCustomTypes) +{ + BT::JsonExporter& exporter = BT::JsonExporter::get(); + + std::vector poses(2); + poses[0].pos.x = 1; + poses[0].pos.y = 2; + poses[0].pos.z = 3; + poses[0].rot.w = 4; + poses[0].rot.x = 5; + poses[0].rot.y = 6; + poses[0].rot.z = 7; + poses[1].pos.x = 8; + poses[1].pos.y = 9; + poses[1].pos.z = 10; + poses[1].rot.w = 11; + poses[1].rot.x = 12; + poses[1].rot.y = 13; + poses[1].rot.z = 14; + + nlohmann::json json; + exporter.toJson(BT::Any(poses), json["poses"]); + + std::cout << json.dump(2) << std::endl; + + ASSERT_EQ(json["poses"][0]["__type"], "Pose3D"); + ASSERT_EQ(json["poses"][0]["pos"]["x"], 1); + ASSERT_EQ(json["poses"][0]["pos"]["y"], 2); + ASSERT_EQ(json["poses"][0]["pos"]["z"], 3); + ASSERT_EQ(json["poses"][0]["rot"]["w"], 4); + ASSERT_EQ(json["poses"][0]["rot"]["x"], 5); + ASSERT_EQ(json["poses"][0]["rot"]["y"], 6); + ASSERT_EQ(json["poses"][0]["rot"]["z"], 7); + ASSERT_EQ(json["poses"][1]["__type"], "Pose3D"); + ASSERT_EQ(json["poses"][1]["pos"]["x"], 8); + ASSERT_EQ(json["poses"][1]["pos"]["y"], 9); + ASSERT_EQ(json["poses"][1]["pos"]["z"], 10); + ASSERT_EQ(json["poses"][1]["rot"]["w"], 11); + ASSERT_EQ(json["poses"][1]["rot"]["x"], 12); + ASSERT_EQ(json["poses"][1]["rot"]["y"], 13); + ASSERT_EQ(json["poses"][1]["rot"]["z"], 14); + + // check the two-ways transform, i.e. "from_json" + auto poses2 = exporter.fromJson(json["poses"])->first.cast>(); + ASSERT_EQ(poses.size(), poses2.size()); + ASSERT_EQ(poses[0].pos.x, poses2[0].pos.x); + ASSERT_EQ(poses[0].pos.y, poses2[0].pos.y); + ASSERT_EQ(poses[0].pos.z, poses2[0].pos.z); + ASSERT_EQ(poses[0].rot.w, poses2[0].rot.w); + ASSERT_EQ(poses[0].rot.x, poses2[0].rot.x); + ASSERT_EQ(poses[0].rot.y, poses2[0].rot.y); + ASSERT_EQ(poses[0].rot.z, poses2[0].rot.z); + ASSERT_EQ(poses[1].pos.x, poses2[1].pos.x); + ASSERT_EQ(poses[1].pos.y, poses2[1].pos.y); + ASSERT_EQ(poses[1].pos.z, poses2[1].pos.z); + ASSERT_EQ(poses[1].rot.w, poses2[1].rot.w); + ASSERT_EQ(poses[1].rot.x, poses2[1].rot.x); + ASSERT_EQ(poses[1].rot.y, poses2[1].rot.y); + ASSERT_EQ(poses[1].rot.z, poses2[1].rot.z); +} \ No newline at end of file From 3eebc8de4ae7648fa2d519e51115f49a3a65339e Mon Sep 17 00:00:00 2001 From: Alberto Tudela Date: Tue, 8 Apr 2025 11:11:05 +0200 Subject: [PATCH 2/3] Update Signed-off-by: Alberto Tudela --- tests/gtest_json.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tests/gtest_json.cpp b/tests/gtest_json.cpp index 03706bb0f..9102fc790 100644 --- a/tests/gtest_json.cpp +++ b/tests/gtest_json.cpp @@ -57,12 +57,12 @@ BT_JSON_CONVERTER(Pose3D, v) } // specialized functions -void jsonFromTime(const Time& t, nlohmann::json& j) +void jsonFromTime(const Time & t, nlohmann::json & j) { j["stamp"] = double(t.sec) + 1e-9 * double(t.nsec); } -void jsonToTime(const nlohmann::json& j, Time& t) +void jsonToTime(const nlohmann::json & j, Time & t) { double sec = j["stamp"]; t.sec = int(sec); @@ -78,7 +78,7 @@ class JsonTest : public testing::Test protected: JsonTest() { - BT::JsonExporter& exporter = BT::JsonExporter::get(); + BT::JsonExporter & exporter = BT::JsonExporter::get(); exporter.addConverter(); exporter.addConverter>(); exporter.addConverter(); @@ -91,9 +91,9 @@ class JsonTest : public testing::Test TEST_F(JsonTest, TwoWaysConversion) { - BT::JsonExporter& exporter = BT::JsonExporter::get(); + BT::JsonExporter & exporter = BT::JsonExporter::get(); - TestTypes::Pose3D pose = { { 1, 2, 3 }, { 4, 5, 6, 7 } }; + TestTypes::Pose3D pose = {{1, 2, 3}, {4, 5, 6, 7}}; nlohmann::json json; exporter.toJson(BT::Any(69), json["int"]); @@ -135,9 +135,9 @@ TEST_F(JsonTest, TwoWaysConversion) TEST_F(JsonTest, CustomTime) { - BT::JsonExporter& exporter = BT::JsonExporter::get(); + BT::JsonExporter & exporter = BT::JsonExporter::get(); - TestTypes::Time stamp = { 3, 8000000 }; + TestTypes::Time stamp = {3, 8000000}; nlohmann::json json; exporter.toJson(BT::Any(stamp), json); std::cout << json.dump() << std::endl; @@ -180,7 +180,7 @@ TEST_F(JsonTest, BlackboardInOut) auto bb_in = BT::Blackboard::create(); bb_in->set("int", 42); bb_in->set("real", 3.14); - bb_in->set("vect", TestTypes::Vector3D{ 1.1, 2.2, 3.3 }); + bb_in->set("vect", TestTypes::Vector3D{1.1, 2.2, 3.3}); auto json = ExportBlackboardToJSON(*bb_in); std::cout << json.dump(2) << std::endl; @@ -199,7 +199,7 @@ TEST_F(JsonTest, BlackboardInOut) TEST_F(JsonTest, VectorOfCustomTypes) { - BT::JsonExporter& exporter = BT::JsonExporter::get(); + BT::JsonExporter & exporter = BT::JsonExporter::get(); std::vector poses(2); poses[0].pos.x = 1; @@ -240,7 +240,8 @@ TEST_F(JsonTest, VectorOfCustomTypes) ASSERT_EQ(json["poses"][1]["rot"]["z"], 14); // check the two-ways transform, i.e. "from_json" - auto poses2 = exporter.fromJson(json["poses"])->first.cast>(); + auto poses2 = + exporter.fromJson(json["poses"])->first.cast>(); ASSERT_EQ(poses.size(), poses2.size()); ASSERT_EQ(poses[0].pos.x, poses2[0].pos.x); ASSERT_EQ(poses[0].pos.y, poses2[0].pos.y); @@ -256,4 +257,4 @@ TEST_F(JsonTest, VectorOfCustomTypes) ASSERT_EQ(poses[1].rot.x, poses2[1].rot.x); ASSERT_EQ(poses[1].rot.y, poses2[1].rot.y); ASSERT_EQ(poses[1].rot.z, poses2[1].rot.z); -} \ No newline at end of file +} From 098d7f2dfd92acd34492ea3118f794f842f966b5 Mon Sep 17 00:00:00 2001 From: Alberto Tudela Date: Tue, 8 Apr 2025 11:14:41 +0200 Subject: [PATCH 3/3] FIx format Signed-off-by: Alberto Tudela --- tests/gtest_json.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/gtest_json.cpp b/tests/gtest_json.cpp index 9102fc790..5a305c030 100644 --- a/tests/gtest_json.cpp +++ b/tests/gtest_json.cpp @@ -57,12 +57,12 @@ BT_JSON_CONVERTER(Pose3D, v) } // specialized functions -void jsonFromTime(const Time & t, nlohmann::json & j) +void jsonFromTime(const Time& t, nlohmann::json& j) { j["stamp"] = double(t.sec) + 1e-9 * double(t.nsec); } -void jsonToTime(const nlohmann::json & j, Time & t) +void jsonToTime(const nlohmann::json& j, Time& t) { double sec = j["stamp"]; t.sec = int(sec); @@ -78,7 +78,7 @@ class JsonTest : public testing::Test protected: JsonTest() { - BT::JsonExporter & exporter = BT::JsonExporter::get(); + BT::JsonExporter& exporter = BT::JsonExporter::get(); exporter.addConverter(); exporter.addConverter>(); exporter.addConverter(); @@ -91,9 +91,9 @@ class JsonTest : public testing::Test TEST_F(JsonTest, TwoWaysConversion) { - BT::JsonExporter & exporter = BT::JsonExporter::get(); + BT::JsonExporter& exporter = BT::JsonExporter::get(); - TestTypes::Pose3D pose = {{1, 2, 3}, {4, 5, 6, 7}}; + TestTypes::Pose3D pose = { { 1, 2, 3 }, { 4, 5, 6, 7 } }; nlohmann::json json; exporter.toJson(BT::Any(69), json["int"]); @@ -135,9 +135,9 @@ TEST_F(JsonTest, TwoWaysConversion) TEST_F(JsonTest, CustomTime) { - BT::JsonExporter & exporter = BT::JsonExporter::get(); + BT::JsonExporter& exporter = BT::JsonExporter::get(); - TestTypes::Time stamp = {3, 8000000}; + TestTypes::Time stamp = { 3, 8000000 }; nlohmann::json json; exporter.toJson(BT::Any(stamp), json); std::cout << json.dump() << std::endl; @@ -180,7 +180,7 @@ TEST_F(JsonTest, BlackboardInOut) auto bb_in = BT::Blackboard::create(); bb_in->set("int", 42); bb_in->set("real", 3.14); - bb_in->set("vect", TestTypes::Vector3D{1.1, 2.2, 3.3}); + bb_in->set("vect", TestTypes::Vector3D{ 1.1, 2.2, 3.3 }); auto json = ExportBlackboardToJSON(*bb_in); std::cout << json.dump(2) << std::endl; @@ -199,7 +199,7 @@ TEST_F(JsonTest, BlackboardInOut) TEST_F(JsonTest, VectorOfCustomTypes) { - BT::JsonExporter & exporter = BT::JsonExporter::get(); + BT::JsonExporter& exporter = BT::JsonExporter::get(); std::vector poses(2); poses[0].pos.x = 1; @@ -241,7 +241,7 @@ TEST_F(JsonTest, VectorOfCustomTypes) // check the two-ways transform, i.e. "from_json" auto poses2 = - exporter.fromJson(json["poses"])->first.cast>(); + exporter.fromJson(json["poses"])->first.cast>(); ASSERT_EQ(poses.size(), poses2.size()); ASSERT_EQ(poses[0].pos.x, poses2[0].pos.x); ASSERT_EQ(poses[0].pos.y, poses2[0].pos.y);