From 7637c3ae2106d90f2b06c227ff8f39077f2c12f6 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 26 Mar 2018 11:17:34 -0400 Subject: [PATCH] Add unit tests for BufferView moving cursor to top/middle/bottom of screen --- test/src/test_BufferView.cc | 64 +++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/test/src/test_BufferView.cc b/test/src/test_BufferView.cc index 3e9d14a..5e57c6e 100644 --- a/test/src/test_BufferView.cc +++ b/test/src/test_BufferView.cc @@ -823,3 +823,67 @@ TEST(BufferViewTest, moving_cursor_screen_row_down_jumps_past_wrapped_tab) EXPECT_EQ(C('f'), **iterator); EXPECT_EQ(3, bv.cursor_screen_row()); } + +TEST(BufferViewTest, moves_cursor_to_top_middle_or_bottom_of_screen_contents_when_file_fits_on_screen) +{ + static const char data[] = + "0abcdefghijklmnopqrstuvwxyz\n" + "1abcdefghijklmnopqrstuvwxyz\n" + "2abcdefghijklmnopqrstuvwxyz\n" + "3abcdefghijklmnopqrstuvwxyz\n" + "4abcdefghijklmnopqrstuvwxyz\n" + "5abcdefghijklmnopqrstuvwxyz\n" + "6abcdefghijklmnopqrstuvwxyz\n"; + auto b = std::make_shared((const uint8_t *)data, strlen(data)); + auto iterator = b->add_cursor(); + BufferView bv(b, iterator, Cwd); + bv.set_scroll_offset(1); + bv.resize(50, 50); + bv.update(); + EXPECT_EQ(C('0'), **iterator); + EXPECT_EQ(0, bv.cursor_screen_row()); + bv.cursor_move(BufferView::CursorMovement::BOTTOM_OF_SCREEN, 0u, false); + bv.update(); + EXPECT_EQ(C('6'), **iterator); + EXPECT_EQ(6, bv.cursor_screen_row()); + bv.cursor_move(BufferView::CursorMovement::MIDDLE_OF_SCREEN, 0u, false); + bv.update(); + EXPECT_EQ(C('3'), **iterator); + EXPECT_EQ(3, bv.cursor_screen_row()); + bv.cursor_move(BufferView::CursorMovement::TOP_OF_SCREEN, 0u, false); + bv.update(); + EXPECT_EQ(C('0'), **iterator); + EXPECT_EQ(0, bv.cursor_screen_row()); +} + +TEST(BufferViewTest, moves_cursor_to_top_middle_or_bottom_of_screen_contents_when_file_does_not_fit_on_screen) +{ + static const char data[] = + "0abcdefghijklmnopqrstuvwxyz\n" + "1abcdefghijklmnopqrstuvwxyz\n" + "2abcdefghijklmnopqrstuvwxyz\n" + "3abcdefghijklmnopqrstuvwxyz\n" + "4abcdefghijklmnopqrstuvwxyz\n" + "5abcdefghijklmnopqrstuvwxyz\n" + "6abcdefghijklmnopqrstuvwxyz\n"; + auto b = std::make_shared((const uint8_t *)data, strlen(data)); + auto iterator = b->add_cursor(); + BufferView bv(b, iterator, Cwd); + bv.set_scroll_offset(1); + bv.resize(20, 8); + bv.update(); + EXPECT_EQ(C('0'), **iterator); + EXPECT_EQ(0, bv.cursor_screen_row()); + bv.cursor_move(BufferView::CursorMovement::BOTTOM_OF_SCREEN, 0u, false); + bv.update(); + EXPECT_EQ(C('3'), **iterator); + EXPECT_EQ(6, bv.cursor_screen_row()); + bv.cursor_move(BufferView::CursorMovement::MIDDLE_OF_SCREEN, 0u, false); + bv.update(); + EXPECT_EQ(C('2'), **iterator); + EXPECT_EQ(4, bv.cursor_screen_row()); + bv.cursor_move(BufferView::CursorMovement::TOP_OF_SCREEN, 0u, false); + bv.update(); + EXPECT_EQ(C('t'), **iterator); + EXPECT_EQ(1, bv.cursor_screen_row()); +}