Fix cursor go_up()/go_down(), turn on unit tests
This commit is contained in:
parent
5c9f7a7645
commit
abb11a0b8c
@ -12,6 +12,7 @@ class Buffer
|
||||
public:
|
||||
Buffer(const char * filename = nullptr);
|
||||
bool write_to_file(const char * filename);
|
||||
auto add_cursor() { return m_gap_buffer->add_cursor(); }
|
||||
|
||||
protected:
|
||||
bool m_eol_at_eof;
|
||||
|
@ -223,6 +223,7 @@ bool GapBuffer::Cursor::go_up(size_t target_column)
|
||||
c2.go_start_of_line();
|
||||
*this = c2;
|
||||
m_line--;
|
||||
m_column = 0u;
|
||||
forward_to_column(target_column);
|
||||
return true;
|
||||
}
|
||||
@ -237,6 +238,7 @@ bool GapBuffer::Cursor::go_down(size_t target_column)
|
||||
}
|
||||
*this = c2;
|
||||
m_line++;
|
||||
m_column = 0u;
|
||||
forward_to_column(target_column);
|
||||
return true;
|
||||
}
|
||||
|
@ -76,6 +76,8 @@ public:
|
||||
uint32_t operator*() const { return *m_iterator; }
|
||||
uint8_t * address() const { return m_iterator.address(); }
|
||||
bool valid() const { return m_iterator.valid(); }
|
||||
size_t line() const { return m_line; }
|
||||
size_t column() const { return m_column; }
|
||||
|
||||
protected:
|
||||
Iterator m_iterator;
|
||||
|
@ -28,24 +28,42 @@ TEST(BufferTest, writes_an_empty_file_for_an_empty_buffer)
|
||||
TestSupport::compare_files("test/files/empty.txt", "test/tmp/f");
|
||||
}
|
||||
|
||||
#if 0
|
||||
TEST(BufferTest, allows_navigating_using_cursors)
|
||||
{
|
||||
Buffer b;
|
||||
ASSERT_TRUE(b.load_from_file("test/files/line_endings/lf_format.txt"));
|
||||
std::shared_ptr<PieceTable::Cursor> cursor = b.piece_table->add_cursor();
|
||||
Buffer b("test/files/line_endings/lf_format.txt");
|
||||
auto cursor = b.add_cursor();
|
||||
|
||||
EXPECT_EQ(0u, cursor->column());
|
||||
EXPECT_EQ(0u, cursor->line());
|
||||
ASSERT_EQ((uint32_t)'H', **cursor);
|
||||
EXPECT_FALSE(cursor->check_go_up(1, cursor->column));
|
||||
|
||||
EXPECT_FALSE(cursor->go_up(cursor->column()));
|
||||
EXPECT_EQ(0u, cursor->column());
|
||||
EXPECT_EQ(0u, cursor->line());
|
||||
ASSERT_EQ((uint32_t)'H', **cursor);
|
||||
EXPECT_TRUE(cursor->check_go_right(1, false));
|
||||
|
||||
EXPECT_TRUE(cursor->go_right(false));
|
||||
EXPECT_EQ(1u, cursor->column());
|
||||
EXPECT_EQ(0u, cursor->line());
|
||||
ASSERT_EQ((uint32_t)'e', **cursor);
|
||||
EXPECT_TRUE(cursor->check_go_down(1, cursor->column));
|
||||
|
||||
EXPECT_TRUE(cursor->go_down(cursor->column()));
|
||||
EXPECT_EQ(1u, cursor->column());
|
||||
EXPECT_EQ(1u, cursor->line());
|
||||
ASSERT_EQ((uint32_t)'h', **cursor);
|
||||
EXPECT_TRUE(cursor->check_go_left(1));
|
||||
|
||||
EXPECT_TRUE(cursor->go_left());
|
||||
EXPECT_EQ(0u, cursor->column());
|
||||
EXPECT_EQ(1u, cursor->line());
|
||||
ASSERT_EQ((uint32_t)'T', **cursor);
|
||||
EXPECT_FALSE(cursor->check_go_left(1));
|
||||
|
||||
EXPECT_FALSE(cursor->go_left());
|
||||
EXPECT_EQ(0u, cursor->column());
|
||||
EXPECT_EQ(1u, cursor->line());
|
||||
ASSERT_EQ((uint32_t)'T', **cursor);
|
||||
EXPECT_FALSE(cursor->check_go_down(1, cursor->column));
|
||||
|
||||
EXPECT_FALSE(cursor->go_down(cursor->column()));
|
||||
EXPECT_EQ(0u, cursor->column());
|
||||
EXPECT_EQ(1u, cursor->line());
|
||||
ASSERT_EQ((uint32_t)'T', **cursor);
|
||||
}
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user