BufferView: add functions to move cursor up/down by screen row

This commit is contained in:
josh committed 2017-09-11 22:43:38 -04:00
1 parent fcd198b691
commit 84759d0a36
3 files changed
+141 -18

No files matched your search

+53
View File
@@ -467,3 +467,56 @@ TEST(BufferViewTest, sets_target_column_when_traversing_left_and_right)
EXPECT_EQ(1, LineNumber(iterator));
EXPECT_EQ(C('a'), **iterator);
}
TEST(BufferViewTest, moves_cursor_by_screen_row)
{
auto b = buffer1();
auto iterator = b->add_iterator();
BufferView bv(b, iterator, Cwd);
bv.resize(4, 4);
for (int i = 0; i < 6; i++)
{
EXPECT_TRUE(bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_DOWN, false));
bv.update();
EXPECT_EQ(1 + i, LineNumber(iterator));
}
EXPECT_EQ(C('6'), **iterator);
EXPECT_TRUE(bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_DOWN, false));
bv.update();
EXPECT_EQ(6, LineNumber(iterator));
EXPECT_EQ(C('d'), **iterator);
EXPECT_TRUE(bv.cursor_move(BufferView::CursorMovement::RIGHT, false));
bv.update();
EXPECT_TRUE(bv.cursor_move(BufferView::CursorMovement::RIGHT, false));
bv.update();
EXPECT_EQ(C('f'), **iterator);
EXPECT_TRUE(bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_DOWN, false));
bv.update();
EXPECT_EQ(C('7'), **iterator);
EXPECT_TRUE(bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_UP, false));
bv.update();
EXPECT_EQ(C('f'), **iterator);
EXPECT_TRUE(bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_UP, false));
bv.update();
EXPECT_EQ(C('b'), **iterator);
EXPECT_TRUE(bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_UP, false));
bv.update();
EXPECT_EQ(C('5'), **iterator);
}
TEST(BufferViewTest, cursor_move_screen_row_up_and_down_returns_false_at_top_and_bottom)
{
auto b = buffer1();
auto iterator = b->add_iterator();
BufferView bv(b, iterator, Cwd);
bv.resize(4, 4);
EXPECT_FALSE(bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_UP, false));
bv.update();
EXPECT_EQ(0, LineNumber(iterator));
for (int i = 0; i < 16; i++)
{
EXPECT_TRUE(bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_DOWN, false));
bv.update();
}
EXPECT_FALSE(bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_DOWN, false));
}