summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp')
-rw-r--r--gnu/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/gnu/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp b/gnu/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp
new file mode 100644
index 00000000000..93f69eb9fa0
--- /dev/null
+++ b/gnu/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp
@@ -0,0 +1,50 @@
+//===- unittest/Tooling/RewriterTest.cpp ----------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "RewriterTestContext.h"
+#include "clang/Tooling/Core/Replacement.h"
+#include "gtest/gtest.h"
+
+namespace clang {
+namespace tooling {
+namespace {
+
+TEST(Rewriter, OverwritesChangedFiles) {
+ RewriterTestContext Context;
+ FileID ID = Context.createOnDiskFile("t.cpp", "line1\nline2\nline3\nline4");
+ Context.Rewrite.ReplaceText(Context.getLocation(ID, 2, 1), 5, "replaced");
+ EXPECT_FALSE(Context.Rewrite.overwriteChangedFiles());
+ EXPECT_EQ("line1\nreplaced\nline3\nline4",
+ Context.getFileContentFromDisk("t.cpp"));
+}
+
+TEST(Rewriter, ContinuesOverwritingFilesOnError) {
+ RewriterTestContext Context;
+ FileID FailingID = Context.createInMemoryFile("invalid/failing.cpp", "test");
+ Context.Rewrite.ReplaceText(Context.getLocation(FailingID, 1, 2), 1, "other");
+ FileID WorkingID = Context.createOnDiskFile(
+ "working.cpp", "line1\nline2\nline3\nline4");
+ Context.Rewrite.ReplaceText(Context.getLocation(WorkingID, 2, 1), 5,
+ "replaced");
+ EXPECT_TRUE(Context.Rewrite.overwriteChangedFiles());
+ EXPECT_EQ("line1\nreplaced\nline3\nline4",
+ Context.getFileContentFromDisk("working.cpp"));
+}
+
+TEST(Rewriter, AdjacentInsertAndDelete) {
+ Replacements Replaces;
+ Replaces.insert(Replacement("<file>", 6, 6, ""));
+ Replaces.insert(Replacement("<file>", 6, 0, "replaced\n"));
+ EXPECT_EQ("line1\nreplaced\nline3\nline4",
+ applyAllReplacements("line1\nline2\nline3\nline4", Replaces));
+}
+
+} // end namespace
+} // end namespace tooling
+} // end namespace clang