Skip to content

Commit fa4597c

Browse files
committed
Vector test
Signed-off-by: Alberto Tudela <[email protected]>
1 parent 14589e5 commit fa4597c

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

tests/gtest_json.cpp

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class JsonTest : public testing::Test
8080
{
8181
BT::JsonExporter& exporter = BT::JsonExporter::get();
8282
exporter.addConverter<TestTypes::Pose3D>();
83+
exporter.addConverter<std::vector<TestTypes::Pose3D>>();
8384
exporter.addConverter<TestTypes::Vector3D>();
8485
exporter.addConverter<TestTypes::Quaternion3D>();
8586

@@ -195,3 +196,64 @@ TEST_F(JsonTest, BlackboardInOut)
195196
ASSERT_EQ(vect_out.y, 2.2);
196197
ASSERT_EQ(vect_out.z, 3.3);
197198
}
199+
200+
TEST_F(JsonTest, VectorOfCustomTypes)
201+
{
202+
BT::JsonExporter& exporter = BT::JsonExporter::get();
203+
204+
std::vector<TestTypes::Pose3D> poses(2);
205+
poses[0].pos.x = 1;
206+
poses[0].pos.y = 2;
207+
poses[0].pos.z = 3;
208+
poses[0].rot.w = 4;
209+
poses[0].rot.x = 5;
210+
poses[0].rot.y = 6;
211+
poses[0].rot.z = 7;
212+
poses[1].pos.x = 8;
213+
poses[1].pos.y = 9;
214+
poses[1].pos.z = 10;
215+
poses[1].rot.w = 11;
216+
poses[1].rot.x = 12;
217+
poses[1].rot.y = 13;
218+
poses[1].rot.z = 14;
219+
220+
nlohmann::json json;
221+
exporter.toJson(BT::Any(poses), json["poses"]);
222+
223+
std::cout << json.dump(2) << std::endl;
224+
225+
ASSERT_EQ(json["poses"][0]["__type"], "Pose3D");
226+
ASSERT_EQ(json["poses"][0]["pos"]["x"], 1);
227+
ASSERT_EQ(json["poses"][0]["pos"]["y"], 2);
228+
ASSERT_EQ(json["poses"][0]["pos"]["z"], 3);
229+
ASSERT_EQ(json["poses"][0]["rot"]["w"], 4);
230+
ASSERT_EQ(json["poses"][0]["rot"]["x"], 5);
231+
ASSERT_EQ(json["poses"][0]["rot"]["y"], 6);
232+
ASSERT_EQ(json["poses"][0]["rot"]["z"], 7);
233+
ASSERT_EQ(json["poses"][1]["__type"], "Pose3D");
234+
ASSERT_EQ(json["poses"][1]["pos"]["x"], 8);
235+
ASSERT_EQ(json["poses"][1]["pos"]["y"], 9);
236+
ASSERT_EQ(json["poses"][1]["pos"]["z"], 10);
237+
ASSERT_EQ(json["poses"][1]["rot"]["w"], 11);
238+
ASSERT_EQ(json["poses"][1]["rot"]["x"], 12);
239+
ASSERT_EQ(json["poses"][1]["rot"]["y"], 13);
240+
ASSERT_EQ(json["poses"][1]["rot"]["z"], 14);
241+
242+
// check the two-ways transform, i.e. "from_json"
243+
auto poses2 = exporter.fromJson(json["poses"])->first.cast<std::vector<TestTypes::Pose3D>>();
244+
ASSERT_EQ(poses.size(), poses2.size());
245+
ASSERT_EQ(poses[0].pos.x, poses2[0].pos.x);
246+
ASSERT_EQ(poses[0].pos.y, poses2[0].pos.y);
247+
ASSERT_EQ(poses[0].pos.z, poses2[0].pos.z);
248+
ASSERT_EQ(poses[0].rot.w, poses2[0].rot.w);
249+
ASSERT_EQ(poses[0].rot.x, poses2[0].rot.x);
250+
ASSERT_EQ(poses[0].rot.y, poses2[0].rot.y);
251+
ASSERT_EQ(poses[0].rot.z, poses2[0].rot.z);
252+
ASSERT_EQ(poses[1].pos.x, poses2[1].pos.x);
253+
ASSERT_EQ(poses[1].pos.y, poses2[1].pos.y);
254+
ASSERT_EQ(poses[1].pos.z, poses2[1].pos.z);
255+
ASSERT_EQ(poses[1].rot.w, poses2[1].rot.w);
256+
ASSERT_EQ(poses[1].rot.x, poses2[1].rot.x);
257+
ASSERT_EQ(poses[1].rot.y, poses2[1].rot.y);
258+
ASSERT_EQ(poses[1].rot.z, poses2[1].rot.z);
259+
}

0 commit comments

Comments
 (0)