summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp')
-rw-r--r--clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp76
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());
+ }
+}
OpenPOWER on IntegriCloud