From 267f7452949617375c8570caf4b03b434e3350e8 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 29 Oct 2019 14:24:28 -0400 Subject: basic structure of vte parser --- Cargo.toml | 3 + src/lib.rs | 1 - src/parser.rs | 7 -- src/screen.rs | 110 +++++++++++++++++++-------- tests/attr.rs | 35 ++++----- tests/control.rs | 15 ++-- tests/csi.rs | 159 +++++++++++++++++++-------------------- tests/escape.rs | 17 ++--- tests/mode.rs | 43 +++++------ tests/osc.rs | 17 ++--- tests/processing.rs | 196 ++++++++++++++++++++++++++++++++++++------------- tests/scroll.rs | 21 +++--- tests/split-escapes.rs | 6 +- tests/support/mod.rs | 11 --- tests/text.rs | 55 +++++++------- 15 files changed, 398 insertions(+), 298 deletions(-) delete mode 100644 src/parser.rs delete mode 100644 tests/support/mod.rs diff --git a/Cargo.toml b/Cargo.toml index df638d9..105dfc6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,3 +10,6 @@ repository = "https://github.com/doy/vt100-rust" readme = "README.md" keywords = ["terminal", "vt100"] license = "MIT" + +[dependencies] +vte = "0.3" diff --git a/src/lib.rs b/src/lib.rs index 3db6c7d..3a74ed3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,7 +6,6 @@ mod cell; pub use cell::Cell; mod color; pub use color::Color; -mod parser; mod pos; mod screen; pub use screen::Screen; diff --git a/src/parser.rs b/src/parser.rs deleted file mode 100644 index c805469..0000000 --- a/src/parser.rs +++ /dev/null @@ -1,7 +0,0 @@ -pub struct Parser {} - -impl Parser { - pub fn new() -> Self { - Parser {} - } -} diff --git a/src/screen.rs b/src/screen.rs index 88a3629..9caa0eb 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -1,6 +1,5 @@ -pub struct Screen { +struct State { size: crate::pos::Pos, - parser: crate::parser::Parser, cells: Vec>, cursor_position: crate::pos::Pos, fgcolor: crate::color::Color, @@ -11,49 +10,97 @@ pub struct Screen { underline: bool, } +impl vte::Perform for State { + fn print(&mut self, _c: char) {} + + fn execute(&mut self, _b: u8) {} + + fn hook( + &mut self, + _params: &[i64], + _intermediates: &[u8], + _ignore: bool, + ) { + } + + fn put(&mut self, _b: u8) {} + + fn unhook(&mut self) {} + + fn osc_dispatch(&mut self, _params: &[&[u8]]) {} + + fn csi_dispatch( + &mut self, + _params: &[i64], + _intermediates: &[u8], + _ignore: bool, + _c: char, + ) { + } + + fn esc_dispatch( + &mut self, + _params: &[i64], + _intermediates: &[u8], + _ignore: bool, + _b: u8, + ) { + } +} + +pub struct Screen { + parser: vte::Parser, + state: State, +} + impl Screen { pub fn new(rows: u16, cols: u16) -> Self { Self { - size: crate::pos::Pos { - row: rows, - col: cols, + parser: vte::Parser::new(), + state: State { + size: crate::pos::Pos { + row: rows, + col: cols, + }, + cells: vec![ + vec![crate::cell::Cell::default(); cols as usize]; + rows as usize + ], + cursor_position: crate::pos::Pos::default(), + fgcolor: crate::color::Color::default(), + bgcolor: crate::color::Color::default(), + bold: false, + italic: false, + inverse: false, + underline: false, }, - parser: crate::parser::Parser::new(), - cells: vec![ - vec![crate::cell::Cell::default(); cols as usize]; - rows as usize - ], - cursor_position: crate::pos::Pos::default(), - fgcolor: crate::color::Color::default(), - bgcolor: crate::color::Color::default(), - bold: false, - italic: false, - inverse: false, - underline: false, } } pub fn rows(&self) -> u16 { - self.size.row + self.state.size.row } pub fn cols(&self) -> u16 { - self.size.col + self.state.size.col } pub fn set_window_size(&mut self, rows: u16, cols: u16) { - self.size = crate::pos::Pos { + self.state.size = crate::pos::Pos { row: rows, col: cols, }; } - pub fn process(&mut self, bytes: &[u8]) -> usize { - unimplemented!() + pub fn process(&mut self, bytes: &[u8]) { + for byte in bytes { + self.parser.advance(&mut self.state, *byte); + } } pub fn cell(&self, row: u16, col: u16) -> Option<&crate::cell::Cell> { - self.cells + self.state + .cells .get(row as usize) .and_then(|v| v.get(col as usize)) } @@ -79,31 +126,34 @@ impl Screen { } pub fn cursor_position(&self) -> (u16, u16) { - (self.cursor_position.row, self.cursor_position.col) + ( + self.state.cursor_position.row, + self.state.cursor_position.col, + ) } pub fn fgcolor(&self) -> crate::color::Color { - self.fgcolor + self.state.fgcolor } pub fn bgcolor(&self) -> crate::color::Color { - self.bgcolor + self.state.bgcolor } pub fn bold(&self) -> bool { - self.bold + self.state.bold } pub fn italic(&self) -> bool { - self.italic + self.state.italic } pub fn inverse(&self) -> bool { - self.inverse + self.state.inverse } pub fn underline(&self) -> bool { - self.underline + self.state.underline } pub fn title(&self) -> Option<&str> { diff --git a/tests/attr.rs b/tests/attr.rs index e621098..cae7555 100644 --- a/tests/attr.rs +++ b/tests/attr.rs @@ -1,15 +1,12 @@ #![allow(clippy::cognitive_complexity)] -mod support; -use support::TestHelpers; - #[test] fn colors() { let mut screen = vt100::Screen::new(24, 80); assert_eq!(screen.fgcolor(), vt100::Color::Default); assert_eq!(screen.bgcolor(), vt100::Color::Default); - screen.assert_process(b"foo\x1b[31mbar"); + screen.process(b"foo\x1b[31mbar"); assert_eq!(screen.cell(0, 0).unwrap().contents(), "f"); assert_eq!(screen.cell(0, 0).unwrap().fgcolor(), vt100::Color::Default); @@ -22,7 +19,7 @@ fn colors() { assert_eq!(screen.fgcolor(), vt100::Color::Idx(1)); assert_eq!(screen.bgcolor(), vt100::Color::Default); - screen.assert_process(b"\x1b[2D\x1b[45mab"); + screen.process(b"\x1b[2D\x1b[45mab"); assert_eq!(screen.cell(0, 4).unwrap().contents(), "a"); assert_eq!(screen.cell(0, 4).unwrap().fgcolor(), vt100::Color::Idx(1)); @@ -31,12 +28,12 @@ fn colors() { assert_eq!(screen.fgcolor(), vt100::Color::Idx(1)); assert_eq!(screen.bgcolor(), vt100::Color::Idx(5)); - screen.assert_process(b"\x1b[m"); + screen.process(b"\x1b[m"); assert_eq!(screen.fgcolor(), vt100::Color::Default); assert_eq!(screen.bgcolor(), vt100::Color::Default); - screen.assert_process(b"\x1b[15;15Hfoo\x1b[31mbar\x1b[m"); + screen.process(b"\x1b[15;15Hfoo\x1b[31mbar\x1b[m"); assert_eq!(screen.cell(14, 14).unwrap().contents(), "f"); assert_eq!( @@ -58,7 +55,7 @@ fn colors() { assert_eq!(screen.fgcolor(), vt100::Color::Default); assert_eq!(screen.bgcolor(), vt100::Color::Default); - screen.assert_process(b"\x1b[2D\x1b[45mab"); + screen.process(b"\x1b[2D\x1b[45mab"); assert_eq!(screen.cell(14, 18).unwrap().contents(), "a"); assert_eq!( @@ -70,8 +67,8 @@ fn colors() { assert_eq!(screen.fgcolor(), vt100::Color::Default); assert_eq!(screen.bgcolor(), vt100::Color::Idx(5)); - screen.assert_process(b"\x1b[m\x1b[2J\x1b[H"); - screen.assert_process(b"a\x1b[38;5;123mb\x1b[48;5;158mc"); + screen.process(b"\x1b[m\x1b[2J\x1b[H"); + screen.process(b"a\x1b[38;5;123mb\x1b[48;5;158mc"); assert_eq!(screen.fgcolor(), vt100::Color::Idx(123)); assert_eq!(screen.bgcolor(), vt100::Color::Idx(158)); @@ -85,7 +82,7 @@ fn colors() { assert_eq!(screen.cell(0, 2).unwrap().fgcolor(), vt100::Color::Idx(123)); assert_eq!(screen.cell(0, 2).unwrap().bgcolor(), vt100::Color::Idx(158)); - screen.assert_process(b"\x1b[38;2;50;75;100md\x1b[48;2;125;150;175me"); + screen.process(b"\x1b[38;2;50;75;100md\x1b[48;2;125;150;175me"); assert_eq!(screen.fgcolor(), vt100::Color::Rgb(50, 75, 100)); assert_eq!(screen.bgcolor(), vt100::Color::Rgb(125, 150, 175)); @@ -105,8 +102,8 @@ fn colors() { vt100::Color::Rgb(125, 150, 175) ); - screen.assert_process(b"\x1b[m\x1b[2J\x1b[H"); - screen.assert_process(b"\x1b[32;47mfoo"); + screen.process(b"\x1b[m\x1b[2J\x1b[H"); + screen.process(b"\x1b[32;47mfoo"); assert_eq!(screen.fgcolor(), vt100::Color::Idx(2)); assert_eq!(screen.bgcolor(), vt100::Color::Idx(7)); @@ -123,7 +120,7 @@ fn attrs() { assert!(!screen.underline()); assert!(!screen.inverse()); - screen.assert_process(b"f\x1b[1mo\x1b[3mo\x1b[4mo\x1b[7mo"); + screen.process(b"f\x1b[1mo\x1b[3mo\x1b[4mo\x1b[7mo"); assert!(screen.bold()); assert!(screen.italic()); assert!(screen.underline()); @@ -149,14 +146,14 @@ fn attrs() { assert!(screen.cell(0, 4).unwrap().underline()); assert!(screen.cell(0, 4).unwrap().inverse()); - screen.assert_process(b"\x1b[m"); + screen.process(b"\x1b[m"); assert!(!screen.bold()); assert!(!screen.italic()); assert!(!screen.underline()); assert!(!screen.inverse()); - screen.assert_process(b"\x1b[2J\x1b[H"); - screen.assert_process(b"\x1b[1;4mf"); + screen.process(b"\x1b[2J\x1b[H"); + screen.process(b"\x1b[1;4mf"); assert!(screen.bold()); assert!(!screen.italic()); assert!(screen.underline()); @@ -166,7 +163,7 @@ fn attrs() { assert!(screen.cell(0, 0).unwrap().underline()); assert!(!screen.cell(0, 0).unwrap().inverse()); - screen.assert_process(b"\x1b[22mo\x1b[24mo"); + screen.process(b"\x1b[22mo\x1b[24mo"); assert!(!screen.bold()); assert!(!screen.italic()); assert!(!screen.underline()); @@ -180,7 +177,7 @@ fn attrs() { assert!(!screen.cell(0, 2).unwrap().underline()); assert!(!screen.cell(0, 2).unwrap().inverse()); - screen.assert_process(b"\x1b[1;3;4;7mo"); + screen.process(b"\x1b[1;3;4;7mo"); assert!(screen.bold()); assert!(screen.italic()); assert!(screen.underline()); diff --git a/tests/control.rs b/tests/control.rs index 82b996c..b9ae147 100644 --- a/tests/control.rs +++ b/tests/control.rs @@ -1,13 +1,10 @@ -mod support; -use support::TestHelpers; - #[test] fn bel() { let mut screen = vt100::Screen::new(24, 80); assert!(!screen.check_audible_bell()); - screen.assert_process(b"\x07"); + screen.process(b"\x07"); assert!(screen.check_audible_bell()); assert!(!screen.check_audible_bell()); } @@ -16,7 +13,7 @@ fn bel() { fn bs() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"foo\x08\x08aa"); + screen.process(b"foo\x08\x08aa"); assert_eq!(screen.cell(0, 0).unwrap().contents(), "f"); assert_eq!(screen.cell(0, 1).unwrap().contents(), "a"); assert_eq!(screen.cell(0, 2).unwrap().contents(), "a"); @@ -27,7 +24,7 @@ fn bs() { "faa\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"\r\nquux\x08\x08\x08\x08\x08\x08bar"); + screen.process(b"\r\nquux\x08\x08\x08\x08\x08\x08bar"); assert_eq!(screen.cell(1, 0).unwrap().contents(), "b"); assert_eq!(screen.cell(1, 1).unwrap().contents(), "a"); assert_eq!(screen.cell(1, 2).unwrap().contents(), "r"); @@ -44,7 +41,7 @@ fn bs() { fn tab() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"foo\tbar"); + screen.process(b"foo\tbar"); assert_eq!(screen.cell(0, 0).unwrap().contents(), "f"); assert_eq!(screen.cell(0, 1).unwrap().contents(), "o"); assert_eq!(screen.cell(0, 2).unwrap().contents(), "o"); @@ -67,7 +64,7 @@ fn tab() { fn lf() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"foo\nbar"); + screen.process(b"foo\nbar"); assert_eq!(screen.cell(0, 0).unwrap().contents(), "f"); assert_eq!(screen.cell(0, 1).unwrap().contents(), "o"); assert_eq!(screen.cell(0, 2).unwrap().contents(), "o"); @@ -89,7 +86,7 @@ fn lf() { fn cr() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"fooo\rbar"); + screen.process(b"fooo\rbar"); assert_eq!(screen.cell(0, 0).unwrap().contents(), "b"); assert_eq!(screen.cell(0, 1).unwrap().contents(), "a"); assert_eq!(screen.cell(0, 2).unwrap().contents(), "r"); diff --git a/tests/csi.rs b/tests/csi.rs index 519fc94..75e4741 100644 --- a/tests/csi.rs +++ b/tests/csi.rs @@ -1,39 +1,36 @@ -mod support; -use support::TestHelpers; - #[test] fn absolute_movement() { let mut screen = vt100::Screen::new(24, 80); assert_eq!(screen.cursor_position(), (0, 0)); - screen.assert_process(b"\x1b[10;10H"); + screen.process(b"\x1b[10;10H"); assert_eq!(screen.cursor_position(), (9, 9)); - screen.assert_process(b"\x1b[d"); + screen.process(b"\x1b[d"); assert_eq!(screen.cursor_position(), (0, 9)); - screen.assert_process(b"\x1b[15d"); + screen.process(b"\x1b[15d"); assert_eq!(screen.cursor_position(), (14, 9)); - screen.assert_process(b"\x1b[H"); + screen.process(b"\x1b[H"); assert_eq!(screen.cursor_position(), (0, 0)); - screen.assert_process(b"\x1b[8H"); + screen.process(b"\x1b[8H"); assert_eq!(screen.cursor_position(), (7, 0)); - screen.assert_process(b"\x1b[15G"); + screen.process(b"\x1b[15G"); assert_eq!(screen.cursor_position(), (7, 14)); - screen.assert_process(b"\x1b[G"); + screen.process(b"\x1b[G"); assert_eq!(screen.cursor_position(), (7, 0)); - screen.assert_process(b"\x1b[0;0H"); + screen.process(b"\x1b[0;0H"); assert_eq!(screen.cursor_position(), (0, 0)); - screen.assert_process(b"\x1b[1;1H"); + screen.process(b"\x1b[1;1H"); assert_eq!(screen.cursor_position(), (0, 0)); - screen.assert_process(b"\x1b[500;500H"); + screen.process(b"\x1b[500;500H"); assert_eq!(screen.cursor_position(), (23, 79)); } @@ -42,52 +39,52 @@ fn relative_movement() { let mut screen = vt100::Screen::new(24, 80); assert_eq!(screen.cursor_position(), (0, 0)); - screen.assert_process(b"\x1b[C"); + screen.process(b"\x1b[C"); assert_eq!(screen.cursor_position(), (0, 1)); - screen.assert_process(b"\x1b[C"); + screen.process(b"\x1b[C"); assert_eq!(screen.cursor_position(), (0, 2)); - screen.assert_process(b"\x1b[20C"); + screen.process(b"\x1b[20C"); assert_eq!(screen.cursor_position(), (0, 22)); - screen.assert_process(b"\x1b[D"); + screen.process(b"\x1b[D"); assert_eq!(screen.cursor_position(), (0, 21)); - screen.assert_process(b"\x1b[D"); + screen.process(b"\x1b[D"); assert_eq!(screen.cursor_position(), (0, 20)); - screen.assert_process(b"\x1b[9D"); + screen.process(b"\x1b[9D"); assert_eq!(screen.cursor_position(), (0, 11)); - screen.assert_process(b"\x1b[500C"); + screen.process(b"\x1b[500C"); assert_eq!(screen.cursor_position(), (0, 79)); - screen.assert_process(b"\x1b[500D"); + screen.process(b"\x1b[500D"); assert_eq!(screen.cursor_position(), (0, 0)); - screen.assert_process(b"\x1b[B"); + screen.process(b"\x1b[B"); assert_eq!(screen.cursor_position(), (1, 0)); - screen.assert_process(b"\x1b[B"); + screen.process(b"\x1b[B"); assert_eq!(screen.cursor_position(), (2, 0)); - screen.assert_process(b"\x1b[20B"); + screen.process(b"\x1b[20B"); assert_eq!(screen.cursor_position(), (22, 0)); - screen.assert_process(b"\x1b[A"); + screen.process(b"\x1b[A"); assert_eq!(screen.cursor_position(), (21, 0)); - screen.assert_process(b"\x1b[A"); + screen.process(b"\x1b[A"); assert_eq!(screen.cursor_position(), (20, 0)); - screen.assert_process(b"\x1b[9A"); + screen.process(b"\x1b[9A"); assert_eq!(screen.cursor_position(), (11, 0)); - screen.assert_process(b"\x1b[500B"); + screen.process(b"\x1b[500B"); assert_eq!(screen.cursor_position(), (23, 0)); - screen.assert_process(b"\x1b[500A"); + screen.process(b"\x1b[500A"); assert_eq!(screen.cursor_position(), (0, 0)); } @@ -99,70 +96,70 @@ fn ed() { "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); + screen.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[10;12H\x1b[0J"); + screen.process(b"\x1b[10;12H\x1b[0J"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.assert_process(b"\x1b[5;7H\x1b[1J"); + screen.process(b"\x1b[5;7H\x1b[1J"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n r\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"\x1b[7;7H\x1b[2J"); + screen.process(b"\x1b[7;7H\x1b[2J"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"\x1b[2J\x1b[H"); + screen.process(b"\x1b[2J\x1b[H"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); + screen.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[10;12H\x1b[J"); + screen.process(b"\x1b[10;12H\x1b[J"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.assert_process(b"\x1b[2J\x1b[H"); + screen.process(b"\x1b[2J\x1b[H"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); + screen.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[10;12H\x1b[?0J"); + screen.process(b"\x1b[10;12H\x1b[?0J"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.assert_process(b"\x1b[5;7H\x1b[?1J"); + screen.process(b"\x1b[5;7H\x1b[?1J"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n r\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"\x1b[7;7H\x1b[?2J"); + screen.process(b"\x1b[7;7H\x1b[?2J"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"\x1b[2J\x1b[H"); + screen.process(b"\x1b[2J\x1b[H"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); + screen.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[10;12H\x1b[?J"); + screen.process(b"\x1b[10;12H\x1b[?J"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); } @@ -174,44 +171,40 @@ fn el() { "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process( - b"foo\x1b[5;5Hbarbar\x1b[10;10Hbazbaz\x1b[20;20Hquux", - ); + screen.process(b"foo\x1b[5;5Hbarbar\x1b[10;10Hbazbaz\x1b[20;20Hquux"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[5;8H\x1b[0K"); + screen.process(b"\x1b[5;8H\x1b[0K"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[10;13H\x1b[1K"); + screen.process(b"\x1b[10;13H\x1b[1K"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[20;22H\x1b[2K"); + screen.process(b"\x1b[20;22H\x1b[2K"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.assert_process(b"\x1b[1;2H\x1b[K"); + screen.process(b"\x1b[1;2H\x1b[K"); assert_eq!(screen.window_contents(0, 0, 23, 79), "f\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.assert_process(b"\x1b[2J\x1b[H"); + screen.process(b"\x1b[2J\x1b[H"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process( - b"foo\x1b[5;5Hbarbar\x1b[10;10Hbazbaz\x1b[20;20Hquux", - ); + screen.process(b"foo\x1b[5;5Hbarbar\x1b[10;10Hbazbaz\x1b[20;20Hquux"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[5;8H\x1b[?0K"); + screen.process(b"\x1b[5;8H\x1b[?0K"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[10;13H\x1b[?1K"); + screen.process(b"\x1b[10;13H\x1b[?1K"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); - screen.assert_process(b"\x1b[20;22H\x1b[?2K"); + screen.process(b"\x1b[20;22H\x1b[?2K"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.assert_process(b"\x1b[1;2H\x1b[?K"); + screen.process(b"\x1b[1;2H\x1b[?K"); assert_eq!(screen.window_contents(0, 0, 23, 79), "f\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); } @@ -223,69 +216,69 @@ fn ich_dch_ech() { "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"\x1b[10;10Hfoobar"); + screen.process(b"\x1b[10;10Hfoobar"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"\x1b[10;12H\x1b[3@"); + screen.process(b"\x1b[10;12H\x1b[3@"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n fo obar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 11)); - screen.assert_process(b"\x1b[4P"); + screen.process(b"\x1b[4P"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n fobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 11)); - screen.assert_process(b"\x1b[100@"); + screen.process(b"\x1b[100@"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n fo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 11)); - screen.assert_process(b"obar"); + screen.process(b"obar"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 15)); - screen.assert_process(b"\x1b[10;12H\x1b[100P"); + screen.process(b"\x1b[10;12H\x1b[100P"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n fo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 11)); - screen.assert_process(b"obar"); + screen.process(b"obar"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 15)); - screen.assert_process(b"\x1b[10;13H\x1b[X"); + screen.process(b"\x1b[10;13H\x1b[X"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n foo ar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 12)); - screen.assert_process(b"\x1b[10;11H\x1b[4X"); + screen.process(b"\x1b[10;11H\x1b[4X"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n f r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 10)); - screen.assert_process(b"\x1b[10;11H\x1b[400X"); + screen.process(b"\x1b[10;11H\x1b[400X"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n f\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" @@ -301,56 +294,56 @@ fn il_dl() { "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"\x1b[10;10Hfoobar\x1b[3D"); + screen.process(b"\x1b[10;10Hfoobar\x1b[3D"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 12)); - screen.assert_process(b"\x1b[L"); + screen.process(b"\x1b[L"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 12)); - screen.assert_process(b"\x1b[3L"); + screen.process(b"\x1b[3L"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 12)); - screen.assert_process(b"\x1b[500L"); + screen.process(b"\x1b[500L"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (9, 12)); - screen.assert_process(b"\x1b[10;10Hfoobar\x1b[3D\x1b[6A"); + screen.process(b"\x1b[10;10Hfoobar\x1b[3D\x1b[6A"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (3, 12)); - screen.assert_process(b"\x1b[M"); + screen.process(b"\x1b[M"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (3, 12)); - screen.assert_process(b"\x1b[3M"); + screen.process(b"\x1b[3M"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert_eq!(screen.cursor_position(), (3, 12)); - screen.assert_process(b"\x1b[500M"); + screen.process(b"\x1b[500M"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" @@ -366,25 +359,25 @@ fn scroll() { "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); + screen.process(b"1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); assert_eq!(screen.window_contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n"); - screen.assert_process(b"\x1b[15;15H"); + screen.process(b"\x1b[15;15H"); assert_eq!(screen.cursor_position(), (14, 14)); - screen.assert_process(b"\x1b[S"); + screen.process(b"\x1b[S"); assert_eq!(screen.window_contents(0, 0, 23, 79), "2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n\n"); assert_eq!(screen.cursor_position(), (14, 14)); - screen.assert_process(b"\x1b[3S"); + screen.process(b"\x1b[3S"); assert_eq!(screen.window_contents(0, 0, 23, 79), "5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (14, 14)); - screen.assert_process(b"\x1b[T"); + screen.process(b"\x1b[T"); assert_eq!(screen.window_contents(0, 0, 23, 79), "\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n\n\n\n"); assert_eq!(screen.cursor_position(), (14, 14)); - screen.assert_process(b"\x1b[5T"); + screen.process(b"\x1b[5T"); assert_eq!(screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n"); assert_eq!(screen.cursor_position(), (14, 14)); } diff --git a/tests/escape.rs b/tests/escape.rs index 6661188..e80234a 100644 --- a/tests/escape.rs +++ b/tests/escape.rs @@ -1,22 +1,19 @@ #![allow(clippy::cognitive_complexity)] -mod support; -use support::TestHelpers; - #[test] fn deckpam() { let mut screen = vt100::Screen::new(24, 80); assert!(!screen.application_keypad()); - screen.assert_process(b"\x1b="); + screen.process(b"\x1b="); assert!(screen.application_keypad()); - screen.assert_process(b"\x1b>"); + screen.process(b"\x1b>"); assert!(!screen.application_keypad()); } #[test] fn ri() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"foo\nbar\x1bMbaz"); + screen.process(b"foo\nbar\x1bMbaz"); assert_eq!( screen.window_contents(0, 0, 23, 79), "foo baz\n bar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" @@ -62,7 +59,7 @@ fn ris() { assert!(!screen.check_visual_bell()); assert!(!screen.check_audible_bell()); - screen.assert_process(b"f\x1b[31m\x1b[47;1;3;4moo\x1b[7m\x1b[21;21H\x1b]2;window title\x07\x1b]1;window icon name\x07\x1b[?25l\x1b[?1h\x1b=\x1b[?9h\x1b[?1000h\x1b[?1002h\x1b[?1006h\x1b[?2004h\x07\x1bg"); + screen.process(b"f\x1b[31m\x1b[47;1;3;4moo\x1b[7m\x1b[21;21H\x1b]2;window title\x07\x1b]1;window icon name\x07\x1b[?25l\x1b[?1h\x1b=\x1b[?9h\x1b[?1000h\x1b[?1002h\x1b[?1006h\x1b[?2004h\x07\x1bg"); assert_eq!(screen.cursor_position(), (20, 20)); @@ -97,7 +94,7 @@ fn ris() { assert!(screen.check_visual_bell()); assert!(screen.check_audible_bell()); - screen.assert_process(b"\x1bc"); + screen.process(b"\x1bc"); assert_eq!(screen.cursor_position(), (0, 0)); let cell = screen.cell(0, 0).unwrap(); @@ -140,7 +137,7 @@ fn ris() { fn vb() { let mut screen = vt100::Screen::new(24, 80); assert!(!screen.check_visual_bell()); - screen.assert_process(b"\x1bg"); + screen.process(b"\x1bg"); assert!(screen.check_visual_bell()); assert!(!screen.check_visual_bell()); } @@ -148,7 +145,7 @@ fn vb() { #[test] fn decsc() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"foo\x1b7\r\n\r\n\r\n bar\x1b8baz"); + screen.process(b"foo\x1b7\r\n\r\n\r\n bar\x1b8baz"); assert_eq!( screen.window_contents(0, 0, 23, 79), "foobaz\n\n\n bar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" diff --git a/tests/mode.rs b/tests/mode.rs index 5f8b2a4..9658ad3 100644 --- a/tests/mode.rs +++ b/tests/mode.rs @@ -1,8 +1,5 @@ #![allow(clippy::cognitive_complexity)] -mod support; -use support::TestHelpers; - #[test] fn modes() { let mut screen = vt100::Screen::new(24, 80); @@ -15,7 +12,7 @@ fn modes() { assert!(!screen.mouse_reporting_sgr_mode()); assert!(!screen.bracketed_paste()); - screen.assert_process(b"\x1b[?1h"); + screen.process(b"\x1b[?1h"); assert!(!screen.hide_cursor()); assert!(!screen.application_keypad()); @@ -26,7 +23,7 @@ fn modes() { assert!(!screen.mouse_reporting_sgr_mode()); assert!(!screen.bracketed_paste()); - screen.assert_process(b"\x1b[?9h"); + screen.process(b"\x1b[?9h"); assert!(!screen.hide_cursor()); assert!(!screen.application_keypad()); @@ -37,7 +34,7 @@ fn modes() { assert!(!screen.mouse_reporting_sgr_mode()); assert!(!screen.bracketed_paste()); - screen.assert_process(b"\x1b[?25l"); + screen.process(b"\x1b[?25l"); assert!(screen.hide_cursor()); assert!(!screen.application_keypad()); @@ -48,7 +45,7 @@ fn modes() { assert!(!screen.mouse_reporting_sgr_mode()); assert!(!screen.bracketed_paste()); - screen.assert_process(b"\x1b[?1000h"); + screen.process(b"\x1b[?1000h"); assert!(screen.hide_cursor()); assert!(!screen.application_keypad()); @@ -59,7 +56,7 @@ fn modes() { assert!(!screen.mouse_reporting_sgr_mode()); assert!(!screen.bracketed_paste()); - screen.assert_process(b"\x1b[?1002h"); + screen.process(b"\x1b[?1002h"); assert!(screen.hide_cursor()); assert!(!screen.application_keypad()); @@ -70,7 +67,7 @@ fn modes() { assert!(!screen.mouse_reporting_sgr_mode()); assert!(!screen.bracketed_paste()); - screen.assert_process(b"\x1b[?1006h"); + screen.process(b"\x1b[?1006h"); assert!(screen.hide_cursor()); assert!(!screen.application_keypad()); @@ -81,7 +78,7 @@ fn modes() { assert!(screen.mouse_reporting_sgr_mode()); assert!(!screen.bracketed_paste()); - screen.assert_process(b"\x1b[?2004h"); + screen.process(b"\x1b[?2004h"); assert!(screen.hide_cursor()); assert!(!screen.application_keypad()); @@ -92,7 +89,7 @@ fn modes() { assert!(screen.mouse_reporting_sgr_mode()); assert!(screen.bracketed_paste()); - screen.assert_process(b"\x1b="); + screen.process(b"\x1b="); assert!(screen.hide_cursor()); assert!(screen.application_keypad()); @@ -103,7 +100,7 @@ fn modes() { assert!(screen.mouse_reporting_sgr_mode()); assert!(screen.bracketed_paste()); - screen.assert_process(b"\x1b[?1l"); + screen.process(b"\x1b[?1l"); assert!(screen.hide_cursor()); assert!(screen.application_keypad()); @@ -114,7 +111,7 @@ fn modes() { assert!(screen.mouse_reporting_sgr_mode()); assert!(screen.bracketed_paste()); - screen.assert_process(b"\x1b[?9l"); + screen.process(b"\x1b[?9l"); assert!(screen.hide_cursor()); assert!(screen.application_keypad()); @@ -125,7 +122,7 @@ fn modes() { assert!(screen.mouse_reporting_sgr_mode()); assert!(screen.bracketed_paste()); - screen.assert_process(b"\x1b[?25h"); + screen.process(b"\x1b[?25h"); assert!(!screen.hide_cursor()); assert!(screen.application_keypad()); @@ -136,7 +133,7 @@ fn modes() { assert!(screen.mouse_reporting_sgr_mode()); assert!(screen.bracketed_paste()); - screen.assert_process(b"\x1b[?1000l"); + screen.process(b"\x1b[?1000l"); assert!(!screen.hide_cursor()); assert!(screen.application_keypad()); @@ -147,7 +144,7 @@ fn modes() { assert!(screen.mouse_reporting_sgr_mode()); assert!(screen.bracketed_paste()); - screen.assert_process(b"\x1b[?1002l"); + screen.process(b"\x1b[?1002l"); assert!(!screen.hide_cursor()); assert!(screen.application_keypad()); @@ -158,7 +155,7 @@ fn modes() { assert!(screen.mouse_reporting_sgr_mode()); assert!(screen.bracketed_paste()); - screen.assert_process(b"\x1b[?1006l"); + screen.process(b"\x1b[?1006l"); assert!(!screen.hide_cursor()); assert!(screen.application_keypad()); @@ -169,7 +166,7 @@ fn modes() { assert!(!screen.mouse_reporting_sgr_mode()); assert!(screen.bracketed_paste()); - screen.assert_process(b"\x1b[?2004l"); + screen.process(b"\x1b[?2004l"); assert!(!screen.hide_cursor()); assert!(screen.application_keypad()); @@ -180,7 +177,7 @@ fn modes() { assert!(!screen.mouse_reporting_sgr_mode()); assert!(!screen.bracketed_paste()); - screen.assert_process(b"\x1b>"); + screen.process(b"\x1b>"); assert!(!screen.hide_cursor()); assert!(!screen.application_keypad()); @@ -195,21 +192,21 @@ fn modes() { #[test] fn alternate_buffer() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"\x1b[m\x1b[2J\x1b[H1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); + screen.process(b"\x1b[m\x1b[2J\x1b[H1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); assert_eq!(screen.window_contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n"); assert!(!screen.alternate_buffer_active()); - screen.assert_process(b"\x1b[?1049h"); + screen.process(b"\x1b[?1049h"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); assert!(screen.alternate_buffer_active()); - screen.assert_process(b"foobar"); + screen.process(b"foobar"); assert_eq!( screen.window_contents(0, 0, 23, 79), "foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ); - screen.assert_process(b"\x1b[?1049l"); + screen.process(b"\x1b[?1049l"); assert_eq!(screen.window_contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n"); assert!(!screen.alternate_buffer_active()); } diff --git a/tests/osc.rs b/tests/osc.rs index be3c476..001ad53 100644 --- a/tests/osc.rs +++ b/tests/osc.rs @@ -1,15 +1,12 @@ -mod support; -use support::TestHelpers; - #[test] fn title() { let mut screen = vt100::Screen::new(24, 80); assert!(screen.title().is_none()); assert!(screen.icon_name().is_none()); - screen.assert_process(b"\x1b]2;it's a title\x07"); + screen.process(b"\x1b]2;it's a title\x07"); assert_eq!(screen.title().unwrap(), "it's a title"); assert!(screen.icon_name().is_none()); - screen.assert_process(b"\x1b]2;\x07"); + screen.process(b"\x1b]2;\x07"); assert_eq!(screen.title().unwrap(), ""); assert!(screen.icon_name().is_none()); } @@ -19,10 +16,10 @@ fn icon_name() { let mut screen = vt100::Screen::new(24, 80); assert!(screen.title().is_none()); assert!(screen.icon_name().is_none()); - screen.assert_process(b"\x1b]1;it's an icon name\x07"); + screen.process(b"\x1b]1;it's an icon name\x07"); assert!(screen.title().is_none()); assert_eq!(screen.icon_name().unwrap(), "it's an icon name"); - screen.assert_process(b"\x1b]1;\x07"); + screen.process(b"\x1b]1;\x07"); assert!(screen.title().is_none()); assert_eq!(screen.icon_name().unwrap(), ""); } @@ -32,10 +29,10 @@ fn title_icon_name() { let mut screen = vt100::Screen::new(24, 80); assert!(screen.title().is_none()); assert!(screen.icon_name().is_none()); - screen.assert_process(b"\x1b]0;it's both\x07"); + screen.process(b"\x1b]0;it's both\x07"); assert_eq!(screen.title().unwrap(), "it's both"); assert_eq!(screen.icon_name().unwrap(), "it's both"); - screen.assert_process(b"\x1b]0;\x07"); + screen.process(b"\x1b]0;\x07"); assert_eq!(screen.title().unwrap(), ""); assert_eq!(screen.icon_name().unwrap(), ""); } @@ -44,6 +41,6 @@ fn title_icon_name() { fn unknown_sequence() { let mut screen = vt100::Screen::new(24, 80); assert_eq!(screen.cell(0, 0).unwrap().contents(), ""); - screen.assert_process(b"\x1b]499;some long, long string?\x07"); + screen.process(b"\x1b]499;some long, long string?\x07"); assert_eq!(screen.cell(0, 0).unwrap().contents(), ""); } diff --git a/tests/processing.rs b/tests/processing.rs index 3110814..0e801d2 100644 --- a/tests/processing.rs +++ b/tests/processing.rs @@ -3,64 +3,162 @@ #[test] fn split_escape_sequences() { let mut screen = vt100::Screen::new(24, 80); - assert_eq!(screen.process(b"abc"), 3); - assert_eq!(screen.process(b"abc\x1b[12;24Hdef"), 14); + let contents = screen.window_contents(0, 0, 23, 79); + screen.process(b"abc"); + assert_ne!(screen.window_contents(0, 0, 23, 79), contents); + let contents = screen.window_contents(0, 0, 23, 79); + screen.process(b"abc\x1b[12;24Hdef"); + assert_ne!(screen.window_contents(0, 0, 23, 79), contents); + let contents = screen.window_contents(0, 0, 23, 79); + assert!(contents.contains("abc")); + assert!(contents.contains("def")); + assert_eq!(screen.cursor_position(), (11, 26)); - assert_eq!(screen.process(b"\x1b"), 0); - assert_eq!(screen.process(b"\x1b["), 0); - assert_eq!(screen.process(b"\x1b[1"), 0); - assert_eq!(screen.process(b"\x1b[12"), 0); - assert_eq!(screen.process(b"\x1b[12;"), 0); - assert_eq!(screen.process(b"\x1b[12;2"), 0); - assert_eq!(screen.process(b"\x1b[12;24"), 0); - assert_eq!(screen.process(b"\x1b[12;24H"), 8); + screen.process(b"\x1b"); + assert_eq!(screen.cursor_position(), (11, 26)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"["); + assert_eq!(screen.cursor_position(), (11, 26)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"1"); + assert_eq!(screen.cursor_position(), (11, 26)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"2"); + assert_eq!(screen.cursor_position(), (11, 26)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b";"); + assert_eq!(screen.cursor_position(), (11, 26)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"2"); + assert_eq!(screen.cursor_position(), (11, 26)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"4"); + assert_eq!(screen.cursor_position(), (11, 26)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"H"); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); - assert_eq!(screen.process(b"abc\x1b"), 3); - assert_eq!(screen.process(b"abc\x1b["), 3); - assert_eq!(screen.process(b"abc\x1b[1"), 3); - assert_eq!(screen.process(b"abc\x1b[12"), 3); - assert_eq!(screen.process(b"abc\x1b[12;"), 3); - assert_eq!(screen.process(b"abc\x1b[12;2"), 3); - assert_eq!(screen.process(b"abc\x1b[12;24"), 3); - assert_eq!(screen.process(b"abc\x1b[12;24H"), 11); + assert!(!screen.mouse_reporting_press_release()); + screen.process(b"\x1b"); + assert!(!screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"["); + assert!(!screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"?"); + assert!(!screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"1"); + assert!(!screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"0"); + assert!(!screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"0"); + assert!(!screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"0"); + assert!(!screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"h"); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); - assert_eq!(screen.process(b"\x1b"), 0); - assert_eq!(screen.process(b"\x1b["), 0); - assert_eq!(screen.process(b"\x1b[?"), 0); - assert_eq!(screen.process(b"\x1b[?1"), 0); - assert_eq!(screen.process(b"\x1b[?10"), 0); - assert_eq!(screen.process(b"\x1b[?100"), 0); - assert_eq!(screen.process(b"\x1b[?1000"), 0); - assert_eq!(screen.process(b"\x1b[?1000h"), 8); - - assert_eq!(screen.process(b"\x1b]"), 0); - assert_eq!(screen.process(b"\x1b]4"), 0); - assert_eq!(screen.process(b"\x1b]49"), 0); - assert_eq!(screen.process(b"\x1b]499"), 0); - assert_eq!(screen.process(b"\x1b]499;"), 0); - assert_eq!(screen.process(b"\x1b]499;a"), 0); - assert_eq!(screen.process(b"\x1b]499;a "), 0); - assert_eq!(screen.process(b"\x1b]499;a '"), 0); - assert_eq!(screen.process(b"\x1b]499;a '["), 0); - assert_eq!(screen.process(b"\x1b]499;a '[]"), 0); - assert_eq!(screen.process(b"\x1b]499;a '[]_"), 0); - assert_eq!(screen.process(b"\x1b]499;a '[]_\x07"), 13); + assert_eq!(screen.title(), None); + screen.process(b"\x1b"); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"]"); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"0"); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b";"); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"a"); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b" "); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"'"); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"["); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"]"); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"_"); + assert_eq!(screen.title(), None); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"\x07"); + assert_eq!(screen.title(), Some("a '[]_")); + assert!(screen.mouse_reporting_press_release()); + assert_eq!(screen.cursor_position(), (11, 23)); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); } #[test] fn split_utf8() { let mut screen = vt100::Screen::new(24, 80); - assert_eq!(screen.process(b"a"), 1); + let contents = screen.window_contents(0, 0, 23, 79); + screen.process(b"a"); + assert_ne!(screen.window_contents(0, 0, 23, 79), contents); + let contents = screen.window_contents(0, 0, 23, 79); - assert_eq!(screen.process(b"\xc3"), 0); - assert_eq!(screen.process(b"\xc3\xa1"), 2); + screen.process(b"\xc3"); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"\xa1"); + assert_ne!(screen.window_contents(0, 0, 23, 79), contents); + let contents = screen.window_contents(0, 0, 23, 79); - assert_eq!(screen.process(b"\xe3"), 0); - assert_eq!(screen.process(b"\xe3\x82"), 0); - assert_eq!(screen.process(b"\xe3\x82\xad"), 3); + screen.process(b"\xe3"); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"\x82"); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"\xad"); + assert_ne!(screen.window_contents(0, 0, 23, 79), contents); + let contents = screen.window_contents(0, 0, 23, 79); - assert_eq!(screen.process(b"\xf0"), 0); - assert_eq!(screen.process(b"\xf0\x9f"), 0); - assert_eq!(screen.process(b"\xf0\x9f\x92"), 0); - assert_eq!(screen.process(b"\xf0\x9f\x92\xa9"), 4); + screen.process(b"\xf0"); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"\x9f"); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"\x92"); + assert_eq!(screen.window_contents(0, 0, 23, 79), contents); + screen.process(b"\xa9"); + assert_ne!(screen.window_contents(0, 0, 23, 79), contents); } diff --git a/tests/scroll.rs b/tests/scroll.rs index 3ac0074..f7e062a 100644 --- a/tests/scroll.rs +++ b/tests/scroll.rs @@ -1,28 +1,25 @@ -mod support; -use support::TestHelpers; - #[test] fn scroll_regions() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"\x1b[m\x1b[2J\x1b[H1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); + screen.process(b"\x1b[m\x1b[2J\x1b[H1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); assert_eq!(screen.window_contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n"); - screen.assert_process(b"\x1b[24;50H\n"); + screen.process(b"\x1b[24;50H\n"); assert_eq!(screen.window_contents(0, 0, 23, 79), "2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n\n"); - screen.assert_process(b"\x1b[m\x1b[2J\x1b[H1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); - screen.assert_process(b"\x1b[10;20r\x1b[20;50H\n"); + screen.process(b"\x1b[m\x1b[2J\x1b[H1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); + screen.process(b"\x1b[10;20r\x1b[20;50H\n"); assert_eq!(screen.window_contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n\n21\n22\n23\n24\n"); assert_eq!(screen.cursor_position(), (19, 49)); - screen.assert_process(b"\x1b[B"); + screen.process(b"\x1b[B"); assert_eq!(screen.cursor_position(), (19, 49)); - screen.assert_process(b"\x1b[20A"); + screen.process(b"\x1b[20A"); assert_eq!(screen.cursor_position(), (9, 49)); - screen.assert_process(b"\x1b[1;24r\x1b[m\x1b[2J\x1b[H1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); - screen.assert_process(b"\x1b[10;20r\x1b[15;50H\x1b[2L"); + screen.process(b"\x1b[1;24r\x1b[m\x1b[2J\x1b[H1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24"); + screen.process(b"\x1b[10;20r\x1b[15;50H\x1b[2L"); assert_eq!(screen.window_contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n\n\n15\n16\n17\n18\n21\n22\n23\n24\n"); - screen.assert_process(b"\x1b[10;50H\x1bM"); + screen.process(b"\x1b[10;50H\x1bM"); assert_eq!(screen.window_contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n\n10\n11\n12\n13\n14\n\n\n15\n16\n17\n21\n22\n23\n24\n"); } diff --git a/tests/split-escapes.rs b/tests/split-escapes.rs index 33f3c0d..b630144 100644 --- a/tests/split-escapes.rs +++ b/tests/split-escapes.rs @@ -9,13 +9,9 @@ fn get_file_contents(name: &str) -> Vec { fn write_to_screen(chunks: &mut Vec>) -> String { let mut screen = vt100::Screen::new(37, 193); - let mut full_chunk = vec![]; for chunk in chunks.iter_mut() { - full_chunk.append(chunk); - let bytes = screen.process(&full_chunk); - full_chunk = full_chunk.split_off(bytes); + screen.process(&chunk); } - assert_eq!(full_chunk.len(), 0); screen.window_contents(0, 0, 36, 192) } diff --git a/tests/support/mod.rs b/tests/support/mod.rs deleted file mode 100644 index cfa6320..0000000 --- a/tests/support/mod.rs +++ /dev/null @@ -1,11 +0,0 @@ -pub trait TestHelpers { - fn assert_process(&mut self, s: &[u8]) -> usize; -} - -impl TestHelpers for vt100::Screen { - fn assert_process(&mut self, s: &[u8]) -> usize { - let ret = self.process(s); - assert_eq!(ret, s.len()); - ret - } -} diff --git a/tests/text.rs b/tests/text.rs index 140b32f..4ece65b 100644 --- a/tests/text.rs +++ b/tests/text.rs @@ -1,12 +1,9 @@ #![allow(clippy::cognitive_complexity)] -mod support; -use support::TestHelpers; - #[test] fn ascii() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"foo"); + screen.process(b"foo"); assert_eq!(screen.cell(0, 0).unwrap().contents(), "f"); assert_eq!(screen.cell(0, 1).unwrap().contents(), "o"); assert_eq!(screen.cell(0, 2).unwrap().contents(), "o"); @@ -25,7 +22,7 @@ fn ascii() { #[test] fn utf8() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process("café".as_bytes()); + screen.process("café".as_bytes()); assert_eq!(screen.cell(0, 0).unwrap().contents(), "c"); assert_eq!(screen.cell(0, 1).unwrap().contents(), "a"); assert_eq!(screen.cell(0, 2).unwrap().contents(), "f"); @@ -45,7 +42,7 @@ fn utf8() { #[test] fn newlines() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"f\r\noo\r\nood"); + screen.process(b"f\r\noo\r\nood"); assert_eq!(screen.cell(0, 0).unwrap().contents(), "f"); assert_eq!(screen.cell(0, 1).unwrap().contents(), ""); assert_eq!(screen.cell(0, 2).unwrap().contents(), ""); @@ -70,7 +67,7 @@ fn newlines() { #[test] fn wide() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process("aデbネ".as_bytes()); + screen.process("aデbネ".as_bytes()); assert_eq!(screen.cell(0, 0).unwrap().contents(), "a"); assert_eq!(screen.cell(0, 1).unwrap().contents(), "デ"); assert_eq!(screen.cell(0, 2).unwrap().contents(), ""); @@ -92,17 +89,17 @@ fn wide() { #[test] fn combining() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"a"); + screen.process(b"a"); assert_eq!(screen.cell(0, 0).unwrap().contents(), "a"); - screen.assert_process("\u{0301}".as_bytes()); + screen.process("\u{0301}".as_bytes()); assert_eq!(screen.cell(0, 0).unwrap().contents(), "á"); - screen.assert_process(b"\x1b[20;20Habcdefg"); + screen.process(b"\x1b[20;20Habcdefg"); assert_eq!(screen.window_contents(19, 19, 19, 26), "abcdefg"); - screen.assert_process("\x1b[20;25H\u{0301}".as_bytes()); + screen.process("\x1b[20;25H\u{0301}".as_bytes()); assert_eq!(screen.window_contents(19, 19, 19, 26), "abcdéfg"); - screen.assert_process(b"\x1b[10;78Haaa"); + screen.process(b"\x1b[10;78Haaa"); assert_eq!(screen.cell(9, 79).unwrap().contents(), "a"); - screen.assert_process("\r\n\u{0301}".as_bytes()); + screen.process("\r\n\u{0301}".as_bytes()); assert_eq!(screen.cell(9, 79).unwrap().contents(), "a"); assert_eq!(screen.cell(10, 0).unwrap().contents(), ""); } @@ -110,34 +107,34 @@ fn combining() { #[test] fn wrap() { let mut screen = vt100::Screen::new(24, 80); - screen.assert_process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"); + screen.process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"); assert_eq!(screen.window_contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.assert_process(b"\x1b[5H01234567890123456789012345678901234567890123456789012345678901234567890123456789"); - screen.assert_process(b"\x1b[6H01234567890123456789012345678901234567890123456789012345678901234567890123456789"); + screen.process(b"\x1b[5H01234567890123456789012345678901234567890123456789012345678901234567890123456789"); + screen.process(b"\x1b[6H01234567890123456789012345678901234567890123456789012345678901234567890123456789"); assert_eq!(screen.window_contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n\n\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.assert_process(b"\x1b[H\x1b[J"); - screen.assert_process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678"); + screen.process(b"\x1b[H\x1b[J"); + screen.process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678"); assert_eq!(screen.window_contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (0, 79)); - screen.assert_process(b"9"); + screen.process(b"9"); assert_eq!(screen.window_contents(0, 0, 23, 79), "01234567890123456789012345678901234567890123456789012345678901234567890123456789\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (0, 80)); - screen.assert_process(b"a"); + screen.process(b"a"); assert_eq!(screen.window_contents(0, 0, 23, 79), "01234567890123456789012345678901234567890123456789012345678901234567890123456789a\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (1, 1)); - screen.assert_process(b"b"); + screen.process(b"b"); assert_eq!(screen.window_contents(0, 0, 23, 79), "01234567890123456789012345678901234567890123456789012345678901234567890123456789ab\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (1, 2)); - screen.assert_process(b"\x1b[H\x1b[J"); - screen.assert_process(b"012345678901234567890123456789012345678901234567890123456789012345678901234567"); + screen.process(b"\x1b[H\x1b[J"); + screen.process(b"012345678901234567890123456789012345678901234567890123456789012345678901234567"); assert_eq!(screen.window_contents(0, 0, 23, 79), "012345678901234567890123456789012345678901234567890123456789012345678901234567\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (0, 78)); - screen.assert_process("ネ".as_bytes()); + screen.process("ネ".as_bytes()); assert_eq!(screen.window_contents(0, 0, 23, 79), "012345678901234567890123456789012345678901234567890123456789012345678901234567ネ\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (0, 80)); - screen.assert_process(b"a"); + screen.process(b"a"); assert_eq!(screen.window_contents(0, 0, 23, 79), "012345678901234567890123456789012345678901234567890123456789012345678901234567ネa\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (1, 1)); assert_eq!(screen.cell(0, 77).unwrap().contents(), "7"); @@ -146,14 +143,14 @@ fn wrap() { assert_eq!(screen.cell(1, 0).unwrap().contents(), "a"); assert_eq!(screen.cell(1, 1).unwrap().contents(), ""); - screen.assert_process(b"\x1b[H\x1b[J"); - screen.assert_process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678"); + screen.process(b"\x1b[H\x1b[J"); + screen.process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678"); assert_eq!(screen.window_contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (0, 79)); - screen.assert_process("ネ".as_bytes()); + screen.process("ネ".as_bytes()); assert_eq!(screen.window_contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678ネ\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (1, 2)); - screen.assert_process(b"a"); + screen.process(b"a"); assert_eq!(screen.window_contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678ネa\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); assert_eq!(screen.cursor_position(), (1, 3)); assert_eq!(screen.cell(0, 77).unwrap().contents(), "7"); -- cgit v1.2.3-54-g00ecf