diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2015-03-08 04:00:33 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2015-03-08 04:00:33 +0000 |
commit | 69e6f1f257be7dcc2487aeb23b6246d03c651990 (patch) | |
tree | 0b569868032ad83072dfdd477c2d75b52267d08f /clang/unittests/Rewrite/RewriteBufferTest.cpp | |
parent | fe0d61d245381e674727884fc7589a7f38446d0f (diff) | |
download | bcm5719-llvm-69e6f1f257be7dcc2487aeb23b6246d03c651990.tar.gz bcm5719-llvm-69e6f1f257be7dcc2487aeb23b6246d03c651990.zip |
[Rewrite] Make RewriteBuffer accessible on its own, and add a unit test for it.
llvm-svn: 231588
Diffstat (limited to 'clang/unittests/Rewrite/RewriteBufferTest.cpp')
-rw-r--r-- | clang/unittests/Rewrite/RewriteBufferTest.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/clang/unittests/Rewrite/RewriteBufferTest.cpp b/clang/unittests/Rewrite/RewriteBufferTest.cpp new file mode 100644 index 00000000000..e3b7d1fb889 --- /dev/null +++ b/clang/unittests/Rewrite/RewriteBufferTest.cpp @@ -0,0 +1,51 @@ +//===- unittests/Rewrite/RewriteBufferTest.cpp - RewriteBuffer tests ------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "clang/Rewrite/Core/RewriteBuffer.h" +#include "gtest/gtest.h" + +using namespace llvm; +using namespace clang; + +namespace { + +static void tagRange(unsigned Offset, unsigned Len, StringRef tagName, + RewriteBuffer &Buf) { + std::string BeginTag; + raw_string_ostream(BeginTag) << '<' << tagName << '>'; + std::string EndTag; + raw_string_ostream(EndTag) << "</" << tagName << '>'; + + Buf.InsertTextAfter(Offset, BeginTag); + Buf.InsertTextBefore(Offset+Len, EndTag); +} + +TEST(RewriteBuffer, TagRanges) { + StringRef Input = "hello world"; + const char *Output = "<outer><inner>hello</inner></outer> "; + + RewriteBuffer Buf; + Buf.Initialize(Input); + StringRef RemoveStr = "world"; + size_t Pos = Input.find(RemoveStr); + Buf.RemoveText(Pos, RemoveStr.size()); + + StringRef TagStr = "hello"; + Pos = Input.find(TagStr); + tagRange(Pos, TagStr.size(), "outer", Buf); + tagRange(Pos, TagStr.size(), "inner", Buf); + + std::string Result; + raw_string_ostream OS(Result); + Buf.write(OS); + OS.flush(); + EXPECT_EQ(Output, Result); +} + +} // anonymous namespace |