| //===- 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 |