diff options
author | dim <dim@FreeBSD.org> | 2015-05-27 18:47:56 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2015-05-27 18:47:56 +0000 |
commit | 3191b2b32a96e1a6ee833fcca73e5c8e0c67ba65 (patch) | |
tree | dbbd4047878da71c1a706e26ce05b4e7791b14cc /unittests/Rewrite/RewriteBufferTest.cpp | |
parent | 38d6f2e7f2ce51a5b3836d26596c6c34a3288752 (diff) | |
download | FreeBSD-src-3191b2b32a96e1a6ee833fcca73e5c8e0c67ba65.zip FreeBSD-src-3191b2b32a96e1a6ee833fcca73e5c8e0c67ba65.tar.gz |
Vendor import of clang trunk r238337:
https://llvm.org/svn/llvm-project/cfe/trunk@238337
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 |