diff options
Diffstat (limited to 'alacritty_terminal/src/term/mod.rs')
-rw-r--r-- | alacritty_terminal/src/term/mod.rs | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/alacritty_terminal/src/term/mod.rs b/alacritty_terminal/src/term/mod.rs index f25bf1ac..ccec0166 100644 --- a/alacritty_terminal/src/term/mod.rs +++ b/alacritty_terminal/src/term/mod.rs @@ -1933,6 +1933,62 @@ mod tests { use crate::term::cell::{Cell, Flags}; #[test] + fn scroll_display_page_up() { + let size = SizeInfo::new(5., 10., 1.0, 1.0, 0.0, 0.0, false); + let mut term = Term::new(&MockConfig::default(), size, ()); + + // Create 11 lines of scrollback. + for _ in 0..20 { + term.newline(); + } + + // Scrollable amount to top is 11. + term.scroll_display(Scroll::PageUp); + assert_eq!(term.vi_mode_cursor.point, Point::new(Line(-1), Column(0))); + assert_eq!(term.grid.display_offset(), 10); + + // Scrollable amount to top is 1. + term.scroll_display(Scroll::PageUp); + assert_eq!(term.vi_mode_cursor.point, Point::new(Line(-2), Column(0))); + assert_eq!(term.grid.display_offset(), 11); + + // Scrollable amount to top is 0. + term.scroll_display(Scroll::PageUp); + assert_eq!(term.vi_mode_cursor.point, Point::new(Line(-2), Column(0))); + assert_eq!(term.grid.display_offset(), 11); + } + + #[test] + fn scroll_display_page_down() { + let size = SizeInfo::new(5., 10., 1.0, 1.0, 0.0, 0.0, false); + let mut term = Term::new(&MockConfig::default(), size, ()); + + // Create 11 lines of scrollback. + for _ in 0..20 { + term.newline(); + } + + // Change display_offset to topmost. + term.grid_mut().scroll_display(Scroll::Top); + term.vi_mode_cursor = ViModeCursor::new(Point::new(Line(-11), Column(0))); + + // Scrollable amount to bottom is 11. + term.scroll_display(Scroll::PageDown); + assert_eq!(term.vi_mode_cursor.point, Point::new(Line(-1), Column(0))); + assert_eq!(term.grid.display_offset(), 1); + + // Scrollable amount to bottom is 1. + term.scroll_display(Scroll::PageDown); + assert_eq!(term.vi_mode_cursor.point, Point::new(Line(0), Column(0))); + assert_eq!(term.grid.display_offset(), 0); + + // Scrollable amount to bottom is 0. + term.scroll_display(Scroll::PageDown); + assert_eq!(term.vi_mode_cursor.point, Point::new(Line(0), Column(0))); + assert_eq!(term.grid.display_offset(), 0); + } + + #[test] fn semantic_selection_works() { let size = SizeInfo::new(5., 3., 1.0, 1.0, 0.0, 0.0, false); let mut term = Term::new(&MockConfig::default(), size, ()); |