#include "gtest/gtest.h" #include "lumacs/buffer.hpp" // Assuming this path is correct based on include setup // Test fixture for Buffer struct BufferTest : public ::testing::Test { lumacs::Buffer buffer; void SetUp() override { // Initialize buffer before each test buffer = lumacs::Buffer("test-buffer"); } void TearDown() override { // Clean up after each test (if necessary) } }; TEST_F(BufferTest, NewBufferIsEmpty) { ASSERT_EQ(buffer.line_count(), 1); ASSERT_TRUE(buffer.line(0).empty()); } TEST_F(BufferTest, InsertText) { buffer.insert({0, 0}, "hello"); ASSERT_EQ(buffer.line(0), "hello"); ASSERT_EQ(buffer.line_count(), 1); } TEST_F(BufferTest, InsertNewline) { buffer.insert({0, 0}, "hello"); buffer.insert_newline({0, 5}); ASSERT_EQ(buffer.line(0), "hello"); ASSERT_EQ(buffer.line(1), ""); ASSERT_EQ(buffer.line_count(), 2); } TEST_F(BufferTest, EraseText) { buffer.insert({0, 0}, "world"); buffer.erase({0, 0}, {0, 5}); ASSERT_TRUE(buffer.line(0).empty()); } TEST_F(BufferTest, IsModified) { ASSERT_FALSE(buffer.is_modified()); buffer.insert({0, 0}, "change"); ASSERT_TRUE(buffer.is_modified()); // Saving should clear modified flag // buffer.save("/tmp/test.txt"); // Requires mock filesystem or actual file write // ASSERT_FALSE(buffer.is_modified()); }