blob: e3b7d1fb8897bd6ef66f262301a9c3920ad1f2d0 [file] [log] [blame]
Argyrios Kyrtzidis69e6f1f2015-03-08 04:00:33 +00001//===- unittests/Rewrite/RewriteBufferTest.cpp - RewriteBuffer tests ------===//
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 "clang/Rewrite/Core/RewriteBuffer.h"
11#include "gtest/gtest.h"
12
13using namespace llvm;
14using namespace clang;
15
16namespace {
17
18static void tagRange(unsigned Offset, unsigned Len, StringRef tagName,
19 RewriteBuffer &Buf) {
20 std::string BeginTag;
21 raw_string_ostream(BeginTag) << '<' << tagName << '>';
22 std::string EndTag;
23 raw_string_ostream(EndTag) << "</" << tagName << '>';
24
25 Buf.InsertTextAfter(Offset, BeginTag);
26 Buf.InsertTextBefore(Offset+Len, EndTag);
27}
28
29TEST(RewriteBuffer, TagRanges) {
30 StringRef Input = "hello world";
31 const char *Output = "<outer><inner>hello</inner></outer> ";
32
33 RewriteBuffer Buf;
34 Buf.Initialize(Input);
35 StringRef RemoveStr = "world";
36 size_t Pos = Input.find(RemoveStr);
37 Buf.RemoveText(Pos, RemoveStr.size());
38
39 StringRef TagStr = "hello";
40 Pos = Input.find(TagStr);
41 tagRange(Pos, TagStr.size(), "outer", Buf);
42 tagRange(Pos, TagStr.size(), "inner", Buf);
43
44 std::string Result;
45 raw_string_ostream OS(Result);
46 Buf.write(OS);
47 OS.flush();
48 EXPECT_EQ(Output, Result);
49}
50
51} // anonymous namespace