| 104 | }; |
| 105 | |
| 106 | TEST_F(JsonTest, TwoWaysConversion) |
| 107 | { |
| 108 | BT::JsonExporter& exporter = BT::JsonExporter::get(); |
| 109 | |
| 110 | TestTypes::Pose3D pose = { { 1, 2, 3 }, { 4, 5, 6, 7 } }; |
| 111 | |
| 112 | nlohmann::json json; |
| 113 | exporter.toJson(BT::Any(69), json["int"]); |
| 114 | exporter.toJson(BT::Any(3.14), json["real"]); |
| 115 | exporter.toJson(BT::Any(pose), json["pose"]); |
| 116 | |
| 117 | std::cout << json.dump(2) << std::endl; |
| 118 | |
| 119 | ASSERT_EQ(json["int"], 69); |
| 120 | ASSERT_EQ(json["real"], 3.14); |
| 121 | |
| 122 | ASSERT_EQ(json["pose"]["__type"], "Pose3D"); |
| 123 | ASSERT_EQ(json["pose"]["pos"]["x"], 1); |
| 124 | ASSERT_EQ(json["pose"]["pos"]["y"], 2); |
| 125 | ASSERT_EQ(json["pose"]["pos"]["z"], 3); |
| 126 | |
| 127 | ASSERT_EQ(json["pose"]["rot"]["w"], 4); |
| 128 | ASSERT_EQ(json["pose"]["rot"]["x"], 5); |
| 129 | ASSERT_EQ(json["pose"]["rot"]["y"], 6); |
| 130 | ASSERT_EQ(json["pose"]["rot"]["z"], 7); |
| 131 | |
| 132 | auto num_result = exporter.fromJson(json["int"]); |
| 133 | ASSERT_TRUE(num_result) << num_result.error(); |
| 134 | auto num = num_result->first.cast<int>(); |
| 135 | ASSERT_EQ(num, 69); |
| 136 | |
| 137 | auto real_result = exporter.fromJson(json["real"]); |
| 138 | ASSERT_TRUE(real_result) << real_result.error(); |
| 139 | auto real = real_result->first.cast<double>(); |
| 140 | ASSERT_EQ(real, 3.14); |
| 141 | |
| 142 | auto pose_result = exporter.fromJson(json["pose"]); |
| 143 | ASSERT_TRUE(pose_result) << pose_result.error(); |
| 144 | auto pose_out = pose_result->first.cast<TestTypes::Pose3D>(); |
| 145 | ASSERT_EQ(pose.pos, pose_out.pos); |
| 146 | ASSERT_EQ(pose.rot, pose_out.rot); |
| 147 | } |
| 148 | |
| 149 | TEST_F(JsonTest, CustomTime) |
| 150 | { |
nothing calls this directly
no test coverage detected