Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef CARTOGRAPHER_TESTING_TEST_HELPERS_H_
00018 #define CARTOGRAPHER_TESTING_TEST_HELPERS_H_
00019
00020 #include "gmock/gmock.h"
00021 #include "google/protobuf/text_format.h"
00022 #include "google/protobuf/util/message_differencer.h"
00023
00024 namespace cartographer {
00025 namespace testing {
00026
00027 template <typename ProtoType>
00028 ProtoType ParseProto(const std::string& proto_string) {
00029 ProtoType proto;
00030 EXPECT_TRUE(
00031 ::google::protobuf::TextFormat::ParseFromString(proto_string, &proto));
00032 return proto;
00033 }
00034
00035 MATCHER_P(EqualsProto, expected_proto_string, "") {
00036 using ConstProtoType = typename std::remove_reference<decltype(arg)>::type;
00037 using ProtoType = typename std::remove_cv<ConstProtoType>::type;
00038
00039 return google::protobuf::util::MessageDifferencer::Equals(
00040 arg, ParseProto<ProtoType>(expected_proto_string));
00041 }
00042
00043 ::testing::Matcher<double> Near(double expected) {
00044 constexpr double kPrecision = 1e-05;
00045 return ::testing::DoubleNear(expected, kPrecision);
00046 }
00047
00048 }
00049 }
00050
00051 #endif // CARTOGRAPHER_TESTING_TEST_HELPERS_H_