From 87370371ecf83866c75cb881a44db5342ad81b48 Mon Sep 17 00:00:00 2001 From: Alexander Belyaev <32522095+pifon2a@users.noreply.github.com> Date: Wed, 30 May 2018 12:56:59 +0200 Subject: [PATCH] Making a test nicer: procrastination and nits. (#1175) --- .../io/proto_stream_deserializer_test.cc | 132 +++++++----------- 1 file changed, 47 insertions(+), 85 deletions(-) diff --git a/cartographer/io/proto_stream_deserializer_test.cc b/cartographer/io/proto_stream_deserializer_test.cc index d51e623..6ba5c43 100644 --- a/cartographer/io/proto_stream_deserializer_test.cc +++ b/cartographer/io/proto_stream_deserializer_test.cc @@ -36,49 +36,19 @@ using ::google::protobuf::util::MessageDifferencer; using ::testing::Eq; using ::testing::Not; -static constexpr char kSerializationHeaderProtoString[] = R"PROTO( - format_version: 1 -)PROTO"; - -static constexpr char kUnsupportedSerializationHeaderProtoString[] = R"PROTO( - format_version: 123 -)PROTO"; - -static constexpr char kPoseGraphProtoString[] = R"PROTO( - pose_graph {} -)PROTO"; - -static constexpr char kAllTrajectoryBuilderOptionsProtoString[] = R"PROTO( - all_trajectory_builder_options {} -)PROTO"; - -static constexpr char kSubmapProtoString[] = R"PROTO( - submap {} -)PROTO"; - -static constexpr char kNodeProtoString[] = R"PROTO( - node {} -)PROTO"; - -static constexpr char kTrajectoryDataProtoString[] = R"PROTO( - trajectory_data {} -)PROTO"; - -static constexpr char kImuDataProtoString[] = R"PROTO( - imu_data {} -)PROTO"; - -static constexpr char kOdometryDataProtoString[] = R"PROTO( - odometry_data {} -)PROTO"; - -static constexpr char kFixedFramePoseDataProtoString[] = R"PROTO( - fixed_frame_pose_data {} -)PROTO"; - -static constexpr char kLandmarkDataProtoString[] = R"PROTO( - landmark_data {} -)PROTO"; +constexpr char kSerializationHeaderProtoString[] = "format_version: 1"; +constexpr char kUnsupportedSerializationHeaderProtoString[] = + "format_version: 123"; +constexpr char kPoseGraphProtoString[] = "pose_graph {}"; +constexpr char kAllTrajectoryBuilderOptionsProtoString[] = + "all_trajectory_builder_options {}"; +constexpr char kSubmapProtoString[] = "submap {}"; +constexpr char kNodeProtoString[] = "node {}"; +constexpr char kTrajectoryDataProtoString[] = "trajectory_data {}"; +constexpr char kImuDataProtoString[] = "imu_data {}"; +constexpr char kOdometryDataProtoString[] = "odometry_data {}"; +constexpr char kFixedFramePoseDataProtoString[] = "fixed_frame_pose_data {}"; +constexpr char kLandmarkDataProtoString[] = "landmark_data {}"; template T ProtoFromStringOrDie(const std::string& proto_string) { @@ -87,45 +57,41 @@ T ProtoFromStringOrDie(const std::string& proto_string) { return msg; } -template -std::unique_ptr ProtoUPtrFromStringOrDie(const std::string& proto_string) { - return make_unique(ProtoFromStringOrDie(proto_string)); -} +class ProtoStreamDeserializerTest : public ::testing::Test { + protected: + void InitializeProtoReader( + const std::string& header_textpb, + const std::initializer_list& data_textpbs) { + std::queue> proto_queue; + proto_queue.emplace(make_unique( + ProtoFromStringOrDie(header_textpb))); + for (const std::string& data_textpb : data_textpbs) { + proto_queue.emplace(make_unique( + ProtoFromStringOrDie(data_textpb))); + } + reader_ = make_unique(std::move(proto_queue)); + } -std::unique_ptr -CreateInMemoryReaderFromTextProtos() { - std::queue> proto_queue; - - proto_queue.emplace(ProtoUPtrFromStringOrDie( - kSerializationHeaderProtoString)); - proto_queue.emplace( - ProtoUPtrFromStringOrDie(kPoseGraphProtoString)); - proto_queue.emplace(ProtoUPtrFromStringOrDie( - kAllTrajectoryBuilderOptionsProtoString)); - proto_queue.emplace( - ProtoUPtrFromStringOrDie(kSubmapProtoString)); - proto_queue.emplace( - ProtoUPtrFromStringOrDie(kNodeProtoString)); - proto_queue.emplace( - ProtoUPtrFromStringOrDie(kTrajectoryDataProtoString)); - proto_queue.emplace( - ProtoUPtrFromStringOrDie(kImuDataProtoString)); - proto_queue.emplace( - ProtoUPtrFromStringOrDie(kOdometryDataProtoString)); - proto_queue.emplace( - ProtoUPtrFromStringOrDie(kFixedFramePoseDataProtoString)); - proto_queue.emplace( - ProtoUPtrFromStringOrDie(kLandmarkDataProtoString)); - return make_unique(std::move(proto_queue)); -} + std::unique_ptr reader_; +}; // This test checks if the serialization works. -TEST(ProtoStreamDeserializerTest, WorksOnGoldenTextStream) { +TEST_F(ProtoStreamDeserializerTest, WorksOnGoldenTextStream) { // Load text proto into in_memory_reader. - std::unique_ptr reader = - CreateInMemoryReaderFromTextProtos(); + InitializeProtoReader(kSerializationHeaderProtoString, + { + kPoseGraphProtoString, + kAllTrajectoryBuilderOptionsProtoString, + kSubmapProtoString, + kNodeProtoString, + kTrajectoryDataProtoString, + kImuDataProtoString, + kOdometryDataProtoString, + kFixedFramePoseDataProtoString, + kLandmarkDataProtoString, + }); - io::ProtoStreamDeserializer deserializer(reader.get()); + io::ProtoStreamDeserializer deserializer(reader_.get()); EXPECT_TRUE(MessageDifferencer::Equals( deserializer.header(), ProtoFromStringOrDie( @@ -179,16 +145,12 @@ TEST(ProtoStreamDeserializerTest, WorksOnGoldenTextStream) { ProtoFromStringOrDie(kLandmarkDataProtoString))); EXPECT_FALSE(deserializer.ReadNextSerializedData(&serialized_data)); - EXPECT_TRUE(reader->eof()); + EXPECT_TRUE(reader_->eof()); } -TEST(ProtoStreamDeserializerDeathTests, FailsIfVersionNotSupported) { - std::queue> proto_queue; - proto_queue.emplace(ProtoUPtrFromStringOrDie( - kUnsupportedSerializationHeaderProtoString)); - InMemoryProtoStreamReader reader(std::move(proto_queue)); - - EXPECT_DEATH(common::make_unique(&reader), +TEST_F(ProtoStreamDeserializerTest, FailsIfVersionNotSupported) { + InitializeProtoReader(kUnsupportedSerializationHeaderProtoString, {}); + EXPECT_DEATH(common::make_unique(reader_.get()), "Unsupported serialization format"); }