//===- unittests/cpp11-migrate/ReplacementsYamlTest.cpp -------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // Test for the Yaml files generated by transforms on header files. // //===----------------------------------------------------------------------===// #include "Utility.h" #include "Core/FileOverrides.h" #include "gtest/gtest.h" using namespace llvm; TEST(ReplacementsYamlTest, writeReadTest) { using clang::tooling::Replacement; const std::string HeaderFileName = "/path/to/common.h"; const std::string TransformID = "loop-convert"; const unsigned int ReplacementOffset1 = 232; const unsigned int ReplacementLength1 = 56; const std::string ReplacementText1 = "(auto & elem : V)"; const unsigned int ReplacementOffset2 = 301; const unsigned int ReplacementLength2 = 2; const std::string ReplacementText2 = "elem"; TransformReplacements TR; TR.TransformID = TransformID; TR.GeneratedReplacements .push_back(Replacement(HeaderFileName, ReplacementOffset1, ReplacementLength1, ReplacementText1)); TR.GeneratedReplacements .push_back(Replacement(HeaderFileName, ReplacementOffset2, ReplacementLength2, ReplacementText2)); TransformDocument TD; TD.FileName = HeaderFileName.c_str(); TD.Replacements.push_back(TR); std::string YamlContent; llvm::raw_string_ostream YamlContentStream(YamlContent); // Write to the YAML file. { yaml::Output YAML(YamlContentStream); YAML << TD; YamlContentStream.str(); ASSERT_NE(YamlContent.length(), 0u); } // Read from the YAML file and verify that what was written is exactly what // we read back. { TransformDocument TDActual; yaml::Input YAML(YamlContent); YAML >> TDActual; ASSERT_NO_ERROR(YAML.error()); EXPECT_EQ(HeaderFileName, TDActual.FileName); ASSERT_EQ(1u, TDActual.Replacements.size()); TransformReplacements TRActual = TDActual.Replacements[0]; EXPECT_EQ(TransformID, TRActual.TransformID); ASSERT_EQ(2u, TRActual.GeneratedReplacements.size()); EXPECT_EQ(ReplacementOffset1, TRActual.GeneratedReplacements[0].getOffset()); EXPECT_EQ(ReplacementLength1, TRActual.GeneratedReplacements[0].getLength()); EXPECT_EQ(ReplacementText1, TRActual.GeneratedReplacements[0].getReplacementText().str()); EXPECT_EQ(ReplacementOffset2, TRActual.GeneratedReplacements[1].getOffset()); EXPECT_EQ(ReplacementLength2, TRActual.GeneratedReplacements[1].getLength()); EXPECT_EQ(ReplacementText2, TRActual.GeneratedReplacements[1].getReplacementText().str()); } }