| //===- 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()); |
| } |
| } |