diff options
Diffstat (limited to 'unittests/Rewrite/RewriteBufferTest.cpp')
-rw-r--r-- | unittests/Rewrite/RewriteBufferTest.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/unittests/Rewrite/RewriteBufferTest.cpp b/unittests/Rewrite/RewriteBufferTest.cpp new file mode 100644 index 0000000..e3b7d1f --- /dev/null +++ b/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 |