1//===- unittest/Tooling/RewriterTest.cpp ----------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "RewriterTestContext.h"
11#include "gtest/gtest.h"
12
13namespace clang {
14
15TEST(Rewriter, OverwritesChangedFiles) {
16  RewriterTestContext Context;
17  FileID ID = Context.createOnDiskFile("t.cpp", "line1\nline2\nline3\nline4");
18  Context.Rewrite.ReplaceText(Context.getLocation(ID, 2, 1), 5, "replaced");
19  EXPECT_FALSE(Context.Rewrite.overwriteChangedFiles());
20  EXPECT_EQ("line1\nreplaced\nline3\nline4",
21            Context.getFileContentFromDisk("t.cpp"));
22}
23
24TEST(Rewriter, ContinuesOverwritingFilesOnError) {
25  RewriterTestContext Context;
26  FileID FailingID = Context.createInMemoryFile("invalid/failing.cpp", "test");
27  Context.Rewrite.ReplaceText(Context.getLocation(FailingID, 1, 2), 1, "other");
28  FileID WorkingID = Context.createOnDiskFile(
29    "working.cpp", "line1\nline2\nline3\nline4");
30  Context.Rewrite.ReplaceText(Context.getLocation(WorkingID, 2, 1), 5,
31                              "replaced");
32  EXPECT_TRUE(Context.Rewrite.overwriteChangedFiles());
33  EXPECT_EQ("line1\nreplaced\nline3\nline4",
34            Context.getFileContentFromDisk("working.cpp"));
35}
36
37} // end namespace clang
38