diff options
Diffstat (limited to 'clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp')
-rw-r--r-- | clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp b/clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp new file mode 100644 index 00000000000..7b95e4dcadd --- /dev/null +++ b/clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp @@ -0,0 +1,76 @@ +//===- 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 SourceFileName = "/path/to/source.cpp"; + 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"; + + HeaderChangeDocument HCD; + HCD.TransformID = TransformID; + HCD.Replacements.push_back(Replacement(HeaderFileName, ReplacementOffset1, + ReplacementLength1, ReplacementText1)); + HCD.Replacements.push_back(Replacement(HeaderFileName, ReplacementOffset2, + ReplacementLength2, ReplacementText2)); + + HCD.HeaderFileName = HeaderFileName.c_str(); + HCD.SourceFileName = SourceFileName.c_str(); + + std::string YamlContent; + llvm::raw_string_ostream YamlContentStream(YamlContent); + + // Write to the YAML file. + { + yaml::Output YAML(YamlContentStream); + YAML << HCD; + YamlContentStream.str(); + ASSERT_NE(YamlContent.length(), 0u); + } + + // Read from the YAML file and verify that what was written is exactly what + // we read back. + { + HeaderChangeDocument HCDActual; + yaml::Input YAML(YamlContent); + YAML >> HCDActual; + ASSERT_NO_ERROR(YAML.error()); + EXPECT_EQ(HeaderFileName, HCDActual.HeaderFileName); + EXPECT_EQ(SourceFileName, HCDActual.SourceFileName); + EXPECT_EQ(TransformID, HCDActual.TransformID); + ASSERT_EQ(2u, HCDActual.Replacements.size()); + + EXPECT_EQ(ReplacementOffset1, HCDActual.Replacements[0].getOffset()); + EXPECT_EQ(ReplacementLength1, HCDActual.Replacements[0].getLength()); + EXPECT_EQ(ReplacementText1, + HCDActual.Replacements[0].getReplacementText().str()); + + EXPECT_EQ(ReplacementOffset2, HCDActual.Replacements[1].getOffset()); + EXPECT_EQ(ReplacementLength2, HCDActual.Replacements[1].getLength()); + EXPECT_EQ(ReplacementText2, + HCDActual.Replacements[1].getReplacementText().str()); + } +} |