13ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar//===- unittests/Rewrite/RewriteBufferTest.cpp - RewriteBuffer tests ------===// 23ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// 33ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// The LLVM Compiler Infrastructure 43ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// 53ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// This file is distributed under the University of Illinois Open Source 63ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// License. See LICENSE.TXT for details. 73ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar// 83ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar//===----------------------------------------------------------------------===// 93ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 103ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#include "clang/Rewrite/Core/RewriteBuffer.h" 113ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar#include "gtest/gtest.h" 123ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 133ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarusing namespace llvm; 143ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarusing namespace clang; 153ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 163ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarnamespace { 173ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 183ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarstatic void tagRange(unsigned Offset, unsigned Len, StringRef tagName, 193ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar RewriteBuffer &Buf) { 203ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar std::string BeginTag; 213ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar raw_string_ostream(BeginTag) << '<' << tagName << '>'; 223ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar std::string EndTag; 233ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar raw_string_ostream(EndTag) << "</" << tagName << '>'; 243ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 253ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar Buf.InsertTextAfter(Offset, BeginTag); 263ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar Buf.InsertTextBefore(Offset+Len, EndTag); 273ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar} 283ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 293ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga NainarTEST(RewriteBuffer, TagRanges) { 303ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar StringRef Input = "hello world"; 313ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar const char *Output = "<outer><inner>hello</inner></outer> "; 323ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 333ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar RewriteBuffer Buf; 343ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar Buf.Initialize(Input); 353ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar StringRef RemoveStr = "world"; 363ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar size_t Pos = Input.find(RemoveStr); 373ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar Buf.RemoveText(Pos, RemoveStr.size()); 383ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 393ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar StringRef TagStr = "hello"; 403ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar Pos = Input.find(TagStr); 413ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar tagRange(Pos, TagStr.size(), "outer", Buf); 423ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar tagRange(Pos, TagStr.size(), "inner", Buf); 433ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 443ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar std::string Result; 453ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar raw_string_ostream OS(Result); 463ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar Buf.write(OS); 473ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar OS.flush(); 483ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar EXPECT_EQ(Output, Result); 493ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar} 503ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar 513ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar} // anonymous namespace 52