From f6338da8d0a2b2fb788dbd2f369dd704b85451e7 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 4 Aug 2016 22:38:18 -0400 Subject: [PATCH] add PieceTable::Cursor::operator*(), add unit test --- src/core/PieceTable.h | 6 ++++++ test/src/test_Buffer.cc | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/src/core/PieceTable.h b/src/core/PieceTable.h index 5782c45..b279d5c 100644 --- a/src/core/PieceTable.h +++ b/src/core/PieceTable.h @@ -63,6 +63,12 @@ public: /** Virtual column (0 based). */ uint32_t column; + + uint32_t operator*() const + { + /* TODO: Use Encoding */ + return piece->start[offset]; + } }; PieceTable(const uint8_t * file_buffer, unsigned long file_buffer_size); diff --git a/test/src/test_Buffer.cc b/test/src/test_Buffer.cc index 11757f3..3aedb48 100644 --- a/test/src/test_Buffer.cc +++ b/test/src/test_Buffer.cc @@ -21,3 +21,11 @@ TEST(BufferTest, writes_an_identical_file_to_what_is_loaded_if_no_changes_were_p TestSupport::compare_files(e, "test/tmp/f"); } } + +TEST(BufferTest, allows_navigating_using_cursors) +{ + Buffer b; + ASSERT_TRUE(b.load_from_file("test/files/line_endings/lf_format.txt")); + std::shared_ptr cursor = b.piece_table->add_cursor(); + EXPECT_EQ((uint32_t)'H', **cursor); +}