test_buffer.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "test_framework.hpp"
  2. #include "lumacs/buffer.hpp"
  3. using namespace lumacs;
  4. TEST(Buffer_Insert) {
  5. Buffer b("test");
  6. b.insert({0, 0}, "Hello");
  7. ASSERT_EQ(std::string("Hello"), b.content());
  8. b.insert({0, 5}, " World");
  9. ASSERT_EQ(std::string("Hello World"), b.content());
  10. }
  11. TEST(Buffer_Erase) {
  12. Buffer b("test");
  13. b.insert({0, 0}, "Hello World");
  14. // Erase " World"
  15. b.erase({{0, 5}, {0, 11}});
  16. ASSERT_EQ(std::string("Hello"), b.content());
  17. }
  18. TEST(Buffer_Find_Basic) {
  19. Buffer b("test");
  20. b.insert({0, 0}, "Hello World\nLine 2\nTarget found");
  21. // Find "World"
  22. auto res = b.find("World", {0, 0});
  23. ASSERT_TRUE(res.has_value());
  24. ASSERT_EQ(static_cast<size_t>(0), res->start.line);
  25. ASSERT_EQ(static_cast<size_t>(6), res->start.column);
  26. ASSERT_EQ(static_cast<size_t>(0), res->end.line);
  27. ASSERT_EQ(static_cast<size_t>(11), res->end.column);
  28. }
  29. TEST(Buffer_Find_NotFound) {
  30. Buffer b("test");
  31. b.insert({0, 0}, "Hello World");
  32. auto res = b.find("Missing", {0, 0});
  33. ASSERT_TRUE(!res.has_value());
  34. }
  35. TEST(Buffer_Find_MultiLine) {
  36. Buffer b("test");
  37. b.insert({0, 0}, "First\nSecond\nThird");
  38. auto res = b.find("Second", {0, 0});
  39. ASSERT_TRUE(res.has_value());
  40. ASSERT_EQ(static_cast<size_t>(1), res->start.line);
  41. ASSERT_EQ(static_cast<size_t>(0), res->start.column);
  42. }
  43. int main() {
  44. return TestRunner::instance().run_all();
  45. }