RewriteBufferTest.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. #include "clang/Rewrite/Core/RewriteBuffer.h"
  10. #include "gtest/gtest.h"
  11. using namespace llvm;
  12. using namespace clang;
  13. namespace {
  14. static void tagRange(unsigned Offset, unsigned Len, StringRef tagName,
  15. RewriteBuffer &Buf) {
  16. std::string BeginTag;
  17. raw_string_ostream(BeginTag) << '<' << tagName << '>';
  18. std::string EndTag;
  19. raw_string_ostream(EndTag) << "</" << tagName << '>';
  20. Buf.InsertTextAfter(Offset, BeginTag);
  21. Buf.InsertTextBefore(Offset+Len, EndTag);
  22. }
  23. TEST(RewriteBuffer, TagRanges) {
  24. StringRef Input = "hello world";
  25. const char *Output = "<outer><inner>hello</inner></outer> ";
  26. RewriteBuffer Buf;
  27. Buf.Initialize(Input);
  28. StringRef RemoveStr = "world";
  29. size_t Pos = Input.find(RemoveStr);
  30. Buf.RemoveText(Pos, RemoveStr.size());
  31. StringRef TagStr = "hello";
  32. Pos = Input.find(TagStr);
  33. tagRange(Pos, TagStr.size(), "outer", Buf);
  34. tagRange(Pos, TagStr.size(), "inner", Buf);
  35. std::string Result;
  36. raw_string_ostream OS(Result);
  37. Buf.write(OS);
  38. OS.flush();
  39. EXPECT_EQ(Output, Result);
  40. }
  41. } // anonymous namespace