Argyrios Kyrtzidis | 69e6f1f | 2015-03-08 04:00:33 +0000 | [diff] [blame] | 1 | //===- 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 | |
| 13 | using namespace llvm; |
| 14 | using namespace clang; |
| 15 | |
| 16 | namespace { |
| 17 | |
| 18 | static 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 | |
| 29 | TEST(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 |