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:
|
public:
|
||||||
Buffer(const char * filename = nullptr);
|
Buffer(const char * filename = nullptr);
|
||||||
bool write_to_file(const char * filename);
|
bool write_to_file(const char * filename);
|
||||||
|
auto add_cursor() { return m_gap_buffer->add_cursor(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_eol_at_eof;
|
bool m_eol_at_eof;
|
||||||
|
@ -223,6 +223,7 @@ bool GapBuffer::Cursor::go_up(size_t target_column)
|
|||||||
c2.go_start_of_line();
|
c2.go_start_of_line();
|
||||||
*this = c2;
|
*this = c2;
|
||||||
m_line--;
|
m_line--;
|
||||||
|
m_column = 0u;
|
||||||
forward_to_column(target_column);
|
forward_to_column(target_column);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -237,6 +238,7 @@ bool GapBuffer::Cursor::go_down(size_t target_column)
|
|||||||
}
|
}
|
||||||
*this = c2;
|
*this = c2;
|
||||||
m_line++;
|
m_line++;
|
||||||
|
m_column = 0u;
|
||||||
forward_to_column(target_column);
|
forward_to_column(target_column);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,8 @@ public:
|
|||||||
uint32_t operator*() const { return *m_iterator; }
|
uint32_t operator*() const { return *m_iterator; }
|
||||||
uint8_t * address() const { return m_iterator.address(); }
|
uint8_t * address() const { return m_iterator.address(); }
|
||||||
bool valid() const { return m_iterator.valid(); }
|
bool valid() const { return m_iterator.valid(); }
|
||||||
|
size_t line() const { return m_line; }
|
||||||
|
size_t column() const { return m_column; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Iterator m_iterator;
|
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");
|
TestSupport::compare_files("test/files/empty.txt", "test/tmp/f");
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
TEST(BufferTest, allows_navigating_using_cursors)
|
TEST(BufferTest, allows_navigating_using_cursors)
|
||||||
{
|
{
|
||||||
Buffer b;
|
Buffer b("test/files/line_endings/lf_format.txt");
|
||||||
ASSERT_TRUE(b.load_from_file("test/files/line_endings/lf_format.txt"));
|
auto cursor = b.add_cursor();
|
||||||
std::shared_ptr<PieceTable::Cursor> cursor = b.piece_table->add_cursor();
|
|
||||||
|
EXPECT_EQ(0u, cursor->column());
|
||||||
|
EXPECT_EQ(0u, cursor->line());
|
||||||
ASSERT_EQ((uint32_t)'H', **cursor);
|
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);
|
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);
|
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);
|
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);
|
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);
|
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);
|
ASSERT_EQ((uint32_t)'T', **cursor);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user