forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===- 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
 |