From 8d4dda299bc3f105d86eea0f59acdd37130f291c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 10 Nov 2019 08:31:12 -0500 Subject: add Default impl for Parser --- CHANGELOG.md | 2 ++ examples/process.rs | 2 +- examples/process_diff.rs | 2 +- examples/process_full.rs | 2 +- src/parser.rs | 6 ++++++ tests/attr.rs | 4 ++-- tests/basic.rs | 12 ++++++------ tests/control.rs | 10 +++++----- tests/csi.rs | 14 +++++++------- tests/escape.rs | 10 +++++----- tests/init.rs | 2 +- tests/mode.rs | 4 ++-- tests/osc.rs | 8 ++++---- tests/processing.rs | 4 ++-- tests/scroll.rs | 6 +++--- tests/text.rs | 12 ++++++------ tests/weird.rs | 2 +- tests/window_contents.rs | 12 ++++++------ 18 files changed, 61 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5713c5d..4801e75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ ### Added * Scrollback support. +* `Default` impl for `Parser` which creates an 80x24 terminal with no + scrollback. ### Changed diff --git a/examples/process.rs b/examples/process.rs index a556b96..d8d6886 100644 --- a/examples/process.rs +++ b/examples/process.rs @@ -12,7 +12,7 @@ fn read_frames() -> impl Iterator> { } fn process_frames(frames: &[Vec]) { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); for frame in frames { parser.process(&frame); } diff --git a/examples/process_diff.rs b/examples/process_diff.rs index d618d9c..c141269 100644 --- a/examples/process_diff.rs +++ b/examples/process_diff.rs @@ -13,7 +13,7 @@ fn read_frames() -> impl Iterator> { fn draw_frames(frames: &[Vec]) { let mut stdout = std::io::stdout(); - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let mut screen = parser.screen().clone(); for frame in frames { parser.process(&frame); diff --git a/examples/process_full.rs b/examples/process_full.rs index 2260443..5aa5422 100644 --- a/examples/process_full.rs +++ b/examples/process_full.rs @@ -13,7 +13,7 @@ fn read_frames() -> impl Iterator> { fn draw_frames(frames: &[Vec]) { let mut stdout = std::io::stdout(); - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); for frame in frames { parser.process(&frame); let contents = parser.screen().contents_formatted(); diff --git a/src/parser.rs b/src/parser.rs index 5099eb9..453cf49 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -38,3 +38,9 @@ impl Parser { &mut self.screen } } + +impl Default for Parser { + fn default() -> Self { + Self::new(24, 80, 0) + } +} diff --git a/tests/attr.rs b/tests/attr.rs index 3d33b07..bd5aac9 100644 --- a/tests/attr.rs +++ b/tests/attr.rs @@ -2,7 +2,7 @@ #[test] fn colors() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"foo\x1b[31mbar"); @@ -175,7 +175,7 @@ fn colors() { #[test] fn attrs() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"f\x1b[1mo\x1b[3mo\x1b[4mo\x1b[7mo"); assert!(!parser.screen().cell(0, 0).unwrap().bold()); diff --git a/tests/basic.rs b/tests/basic.rs index 0e6fee0..67e27ce 100644 --- a/tests/basic.rs +++ b/tests/basic.rs @@ -1,12 +1,12 @@ #[test] fn object_creation() { - let parser = vt100::Parser::new(24, 80, 0); + let parser = vt100::Parser::default(); assert_eq!(parser.screen().size(), (24, 80)); } #[test] fn process_text() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let input = b"foo\x1b[31m\x1b[32mb\x1b[3;7;42ma\x1b[23mr"; parser.process(input); assert_eq!(parser.screen().contents(), "foobar"); @@ -14,7 +14,7 @@ fn process_text() { #[test] fn set_size() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().size(), (24, 80)); assert_eq!(parser.screen().cursor_position(), (0, 0)); @@ -58,7 +58,7 @@ fn set_size() { #[test] fn cell_contents() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let input = b"foo\x1b[31m\x1b[32mb\x1b[3;7;42ma\x1b[23mr"; parser.process(input); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "f"); @@ -72,7 +72,7 @@ fn cell_contents() { #[test] fn cell_colors() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let input = b"foo\x1b[31m\x1b[32mb\x1b[3;7;42ma\x1b[23mr"; parser.process(input); @@ -96,7 +96,7 @@ fn cell_colors() { #[test] fn cell_attrs() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let input = b"foo\x1b[31m\x1b[32mb\x1b[3;7;42ma\x1b[23mr"; parser.process(input); diff --git a/tests/control.rs b/tests/control.rs index 5b97581..ab623ce 100644 --- a/tests/control.rs +++ b/tests/control.rs @@ -1,6 +1,6 @@ #[test] fn bel() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert!(!parser.screen_mut().check_audible_bell()); @@ -11,7 +11,7 @@ fn bel() { #[test] fn bs() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"foo\x08\x08aa"); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "f"); @@ -33,7 +33,7 @@ fn bs() { #[test] fn tab() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"foo\tbar"); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "f"); @@ -52,7 +52,7 @@ fn tab() { } fn lf_with(b: u8) { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"foo"); parser.process(&[b]); @@ -88,7 +88,7 @@ fn ff() { #[test] fn cr() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"fooo\rbar"); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "b"); diff --git a/tests/csi.rs b/tests/csi.rs index 4f06cd3..2b4d0b0 100644 --- a/tests/csi.rs +++ b/tests/csi.rs @@ -1,6 +1,6 @@ #[test] fn absolute_movement() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().cursor_position(), (0, 0)); parser.process(b"\x1b[10;10H"); @@ -36,7 +36,7 @@ fn absolute_movement() { #[test] fn relative_movement() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().cursor_position(), (0, 0)); parser.process(b"\x1b[C"); @@ -91,7 +91,7 @@ fn relative_movement() { #[allow(clippy::cognitive_complexity)] #[test] fn ed() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().contents(), ""); parser.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); @@ -317,7 +317,7 @@ fn ed() { #[allow(clippy::cognitive_complexity)] #[test] fn el() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().contents(), ""); parser.process(b"foo\x1b[5;5Hbarbar\x1b[10;10Hbazbaz\x1b[20;20Hquux"); @@ -509,7 +509,7 @@ fn el() { #[test] fn ich_dch_ech() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().contents(), ""); parser.process(b"\x1b[10;10Hfoobar"); @@ -575,7 +575,7 @@ fn ich_dch_ech() { #[test] fn il_dl() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().contents(), ""); parser.process(b"\x1b[10;10Hfoobar\x1b[3D"); @@ -628,7 +628,7 @@ fn il_dl() { #[test] fn scroll() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().contents(), ""); parser.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"); diff --git a/tests/escape.rs b/tests/escape.rs index cf28c0f..43eb666 100644 --- a/tests/escape.rs +++ b/tests/escape.rs @@ -2,7 +2,7 @@ #[test] fn deckpam() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert!(!parser.screen().application_keypad()); parser.process(b"\x1b="); assert!(parser.screen().application_keypad()); @@ -12,7 +12,7 @@ fn deckpam() { #[test] fn ri() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"foo\nbar\x1bMbaz"); assert_eq!(parser.screen().contents(), "foo baz\n bar"); @@ -25,7 +25,7 @@ fn ri() { #[test] fn ris() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().cursor_position(), (0, 0)); let cell = parser.screen().cell(0, 0).unwrap(); @@ -123,7 +123,7 @@ fn ris() { #[test] fn vb() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert!(!parser.screen_mut().check_visual_bell()); parser.process(b"\x1bg"); assert!(parser.screen_mut().check_visual_bell()); @@ -132,7 +132,7 @@ fn vb() { #[test] fn decsc() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"foo\x1b7\r\n\r\n\r\n bar\x1b8baz"); assert_eq!(parser.screen().contents(), "foobaz\n\n\n bar"); assert_eq!(parser.screen().cursor_position(), (0, 6)); diff --git a/tests/init.rs b/tests/init.rs index 490fe3e..ccb1c70 100644 --- a/tests/init.rs +++ b/tests/init.rs @@ -2,7 +2,7 @@ #[test] fn init() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().size(), (24, 80)); assert_eq!(parser.screen().cursor_position(), (0, 0)); diff --git a/tests/mode.rs b/tests/mode.rs index da08f51..5e222fe 100644 --- a/tests/mode.rs +++ b/tests/mode.rs @@ -2,7 +2,7 @@ #[test] fn modes() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert!(!parser.screen().application_keypad()); assert!(!parser.screen().application_cursor()); assert!(!parser.screen().hide_cursor()); @@ -319,7 +319,7 @@ fn modes() { #[test] fn alternate_buffer() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); // 47 diff --git a/tests/osc.rs b/tests/osc.rs index fc489ec..f7cc586 100644 --- a/tests/osc.rs +++ b/tests/osc.rs @@ -1,6 +1,6 @@ #[test] fn title() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().title(), ""); assert_eq!(parser.screen().icon_name(), ""); parser.process(b"\x1b]2;it's a title\x07"); @@ -13,7 +13,7 @@ fn title() { #[test] fn icon_name() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().title(), ""); assert_eq!(parser.screen().icon_name(), ""); parser.process(b"\x1b]1;it's an icon name\x07"); @@ -26,7 +26,7 @@ fn icon_name() { #[test] fn title_icon_name() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().title(), ""); assert_eq!(parser.screen().icon_name(), ""); parser.process(b"\x1b]0;it's both\x07"); @@ -39,7 +39,7 @@ fn title_icon_name() { #[test] fn unknown_sequence() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), ""); parser.process(b"\x1b]499;some long, long string?\x07"); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), ""); diff --git a/tests/processing.rs b/tests/processing.rs index 7cc384c..5bfb85d 100644 --- a/tests/processing.rs +++ b/tests/processing.rs @@ -2,7 +2,7 @@ #[test] fn split_escape_sequences() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let contents = parser.screen().contents(); parser.process(b"abc"); assert_ne!(parser.screen().contents(), contents); @@ -193,7 +193,7 @@ fn split_escape_sequences() { #[test] fn split_utf8() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let contents = parser.screen().contents(); parser.process(b"a"); assert_ne!(parser.screen().contents(), contents); diff --git a/tests/scroll.rs b/tests/scroll.rs index 9abef12..d15cae8 100644 --- a/tests/scroll.rs +++ b/tests/scroll.rs @@ -1,6 +1,6 @@ #[test] fn scroll_regions() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.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!(parser.screen().contents(), "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24"); @@ -40,7 +40,7 @@ fn scroll_regions() { #[test] fn origin_mode() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"\x1b[5;15r"); assert_eq!(parser.screen().cursor_position(), (4, 0)); @@ -156,7 +156,7 @@ fn scrollback() { #[test] fn edge_of_screen() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let screen = parser.screen().clone(); parser.process(b"\x1b[31m\x1b[24;75Hfooba\x08r\x08\x1b[1@a"); diff --git a/tests/text.rs b/tests/text.rs index 49cde5b..c49ded4 100644 --- a/tests/text.rs +++ b/tests/text.rs @@ -2,7 +2,7 @@ #[test] fn ascii() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"foo"); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "f"); assert_eq!(parser.screen().cell(0, 1).unwrap().contents(), "o"); @@ -14,7 +14,7 @@ fn ascii() { #[test] fn utf8() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process("café".as_bytes()); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "c"); assert_eq!(parser.screen().cell(0, 1).unwrap().contents(), "a"); @@ -27,7 +27,7 @@ fn utf8() { #[test] fn newlines() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"f\r\noo\r\nood"); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "f"); assert_eq!(parser.screen().cell(0, 1).unwrap().contents(), ""); @@ -45,7 +45,7 @@ fn newlines() { #[test] fn wide() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let screen = parser.screen().clone(); parser.process("aデbネ".as_bytes()); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "a"); @@ -132,7 +132,7 @@ fn wide() { #[test] fn combining() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"a"); assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "a"); parser.process("\u{0301}".as_bytes()); @@ -158,7 +158,7 @@ fn combining() { #[test] fn wrap() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"); assert_eq!(parser.screen().contents(), "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"); parser.process(b"\x1b[5H01234567890123456789012345678901234567890123456789012345678901234567890123456789"); diff --git a/tests/weird.rs b/tests/weird.rs index 9dd6172..35c1c0d 100644 --- a/tests/weird.rs +++ b/tests/weird.rs @@ -1,6 +1,6 @@ #[test] fn intermediate_control() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); assert_eq!(parser.screen().cursor_position(), (0, 0)); parser.process(b"\x1b"); diff --git a/tests/window_contents.rs b/tests/window_contents.rs index a1607bd..644cc39 100644 --- a/tests/window_contents.rs +++ b/tests/window_contents.rs @@ -2,7 +2,7 @@ use std::io::Read as _; #[test] fn formatted() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); compare_formatted(parser.screen()); assert_eq!( parser.screen().contents_formatted(), @@ -65,7 +65,7 @@ fn formatted() { #[test] fn empty_cells() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); parser.process(b"\x1b[5C\x1b[32m bar\x1b[H\x1b[31mfoo"); compare_formatted(parser.screen()); assert_eq!(parser.screen().contents(), "foo bar"); @@ -77,7 +77,7 @@ fn empty_cells() { #[test] fn cursor_positioning() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let screen1 = parser.screen().clone(); parser.process(b":\x1b[K"); @@ -109,7 +109,7 @@ fn cursor_positioning() { #[test] fn rows() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let screen1 = parser.screen().clone(); assert_eq!( screen1.rows(0, 80).collect::>(), @@ -413,7 +413,7 @@ fn rows() { #[test] fn diff() { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let screen1 = parser.screen().clone(); parser.process(b"\x1b[5C\x1b[32m bar"); let screen2 = parser.screen().clone(); @@ -452,7 +452,7 @@ fn diff_crawl_full() { } fn diff_crawl(i: usize) { - let mut parser = vt100::Parser::new(24, 80, 0); + let mut parser = vt100::Parser::default(); let screens: Vec<_> = (1..=i) .map(|i| { let mut file = -- cgit v1.2.3-54-g00ecf