/* * Copyright 2018 The Cartographer Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "cartographer_grpc/handlers/get_landmark_poses_handler.h" #include "cartographer_grpc/testing/handler_test.h" #include "cartographer_grpc/testing/test_helpers.h" #include "google/protobuf/text_format.h" #include "gtest/gtest.h" namespace cartographer_grpc { namespace handlers { namespace { using ::cartographer::transform::Rigid3d; using ::testing::_; using ::testing::Eq; using ::testing::Pointee; using ::testing::Truly; const std::string kMessage = R"PROTO( landmark_poses { landmark_id: "landmark_1" global_pose { translation { x: 1 y: 2 z: 3 } rotation { w: 1 x: 0 y: 0 z: 0 } } } landmark_poses { landmark_id: "landmark_2" global_pose { translation { x: 3 y: 2 z: 1 } rotation { w: 0 x: 1 y: 0 z: 0 } } } )PROTO"; using GetLandmarkPosesHandlerTest = testing::HandlerTest; TEST_F(GetLandmarkPosesHandlerTest, NoLocalSlamUploader) { std::map landmark_poses{ {"landmark_1", Rigid3d(Eigen::Vector3d(1., 2., 3.), Eigen::Quaterniond(1., 0., 0., 0.))}, {"landmark_2", Rigid3d(Eigen::Vector3d(3., 2., 1.), Eigen::Quaterniond(0., 1., 0., 0.))}}; EXPECT_CALL(*mock_pose_graph_, GetLandmarkPoses()) .WillOnce(::testing::Return(landmark_poses)); test_server_->SendWrite(google::protobuf::Empty()); proto::GetLandmarkPosesResponse expected_response; EXPECT_TRUE(google::protobuf::TextFormat::ParseFromString( kMessage, &expected_response)); EXPECT_THAT( test_server_->response(), ::testing::Truly(testing::BuildProtoPredicateEquals(&expected_response))); } } // namespace } // namespace handlers } // namespace cartographer_grpc