diff options
Diffstat (limited to 'tests/window_contents.rs')
-rw-r--r-- | tests/window_contents.rs | 273 |
1 files changed, 262 insertions, 11 deletions
diff --git a/tests/window_contents.rs b/tests/window_contents.rs index d79f75a..ccf5342 100644 --- a/tests/window_contents.rs +++ b/tests/window_contents.rs @@ -2,7 +2,7 @@ fn formatted() { let mut parser = vt100::Parser::new(24, 80); compare_formatted(&parser); - assert_eq!(parser.screen().contents_formatted(0, 0, 23, 79), b""); + assert_eq!(parser.screen().contents_formatted(), b""); parser.process(b"foobar"); compare_formatted(&parser); @@ -10,7 +10,7 @@ fn formatted() { assert!(!parser.screen().cell(0, 3).unwrap().bold()); assert!(!parser.screen().cell(0, 4).unwrap().bold()); assert!(!parser.screen().cell(0, 5).unwrap().bold()); - assert_eq!(parser.screen().contents_formatted(0, 0, 23, 79), b"foobar"); + assert_eq!(parser.screen().contents_formatted(), b"foobar"); parser.process(b"\x1b[1;4H\x1b[1;7m\x1b[33mb"); compare_formatted(&parser); @@ -19,7 +19,7 @@ fn formatted() { assert!(!parser.screen().cell(0, 4).unwrap().bold()); assert!(!parser.screen().cell(0, 5).unwrap().bold()); assert_eq!( - parser.screen().contents_formatted(0, 0, 23, 79), + parser.screen().contents_formatted(), b"foo\x1b[33;1;7mb\x1b[mar" ); @@ -30,28 +30,28 @@ fn formatted() { assert!(!parser.screen().cell(0, 4).unwrap().bold()); assert!(!parser.screen().cell(0, 5).unwrap().bold()); assert_eq!( - parser.screen().contents_formatted(0, 0, 23, 79), + parser.screen().contents_formatted(), b"foo\x1b[33;1;7mb\x1b[42;22ma\x1b[mr" ); parser.process(b"\x1b[1;6H\x1b[35mr\r\nquux"); compare_formatted(&parser); assert_eq!( - parser.screen().contents_formatted(0, 0, 23, 79), + parser.screen().contents_formatted(), &b"foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\r\nquux"[..] ); parser.process(b"\x1b[2;1H\x1b[45mquux"); compare_formatted(&parser); assert_eq!( - parser.screen().contents_formatted(0, 0, 23, 79), + parser.screen().contents_formatted(), &b"foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\r\n\x1b[45mquux"[..] ); parser .process(b"\x1b[2;2H\x1b[38;2;123;213;231mu\x1b[38;5;254mu\x1b[39mx"); compare_formatted(&parser); - assert_eq!(parser.screen().contents_formatted(0, 0 ,23, 79), &b"foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\r\n\x1b[45mq\x1b[38;2;123;213;231mu\x1b[38;5;254mu\x1b[39mx"[..]); + assert_eq!(parser.screen().contents_formatted(), &b"foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\r\n\x1b[45mq\x1b[38;2;123;213;231mu\x1b[38;5;254mu\x1b[39mx"[..]); } #[test] @@ -59,17 +59,268 @@ fn empty_cells() { let mut parser = vt100::Parser::new(24, 80); parser.process(b"\x1b[5C\x1b[32m bar\x1b[H\x1b[31mfoo"); compare_formatted(&parser); - assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo bar"); + assert_eq!(parser.screen().contents(), "foo bar"); assert_eq!( - parser.screen().contents_formatted(0, 0, 23, 79), + parser.screen().contents_formatted(), b"\x1b[31mfoo\x1b[m\x1b[C\x1b[C\x1b[32m bar" ); } +#[test] +fn rows() { + let mut parser = vt100::Parser::new(24, 80); + assert_eq!( + parser.screen().rows(0, 80).collect::<Vec<String>>(), + vec![ + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + ] + ); + assert_eq!( + parser + .screen() + .rows_formatted(0, 80) + .collect::<Vec<Vec<u8>>>(), + vec![ + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + ] + ); + assert_eq!( + parser.screen().rows(5, 15).collect::<Vec<String>>(), + vec![ + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + ] + ); + assert_eq!( + parser + .screen() + .rows_formatted(5, 15) + .collect::<Vec<Vec<u8>>>(), + vec![ + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + ] + ); + + parser + .process(b"\x1b[31mfoo\x1b[10;10H\x1b[32mbar\x1b[20;20H\x1b[33mbaz"); + assert_eq!( + parser.screen().rows(0, 80).collect::<Vec<String>>(), + vec![ + "foo".to_string(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + " bar".to_string(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + " baz".to_string(), + String::new(), + String::new(), + String::new(), + String::new(), + ] + ); + assert_eq!( + parser + .screen() + .rows_formatted(0, 80) + .collect::<Vec<Vec<u8>>>(), + vec![ + b"\x1b[31mfoo".to_vec(), + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + b"\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[32mbar".to_vec(), + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + b"\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[33mbaz".to_vec(), + vec![], + vec![], + vec![], + vec![], + ] + ); + assert_eq!( + parser.screen().rows(5, 15).collect::<Vec<String>>(), + vec![ + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + " bar".to_string(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + String::new(), + " b".to_string(), + String::new(), + String::new(), + String::new(), + String::new(), + ] + ); + assert_eq!( + parser + .screen() + .rows_formatted(5, 15) + .collect::<Vec<Vec<u8>>>(), + vec![ + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + b"\x1b[C\x1b[C\x1b[C\x1b[C\x1b[32mbar".to_vec(), + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + b"\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[C\x1b[33mb".to_vec(), + vec![], + vec![], + vec![], + vec![], + ] + ); +} + fn compare_formatted(parser: &vt100::Parser) { let (rows, cols) = parser.screen().size(); - let contents = - parser.screen().contents_formatted(0, 0, rows - 1, cols - 1); + let contents = parser.screen().contents_formatted(); let mut parser2 = vt100::Parser::new(rows, cols); parser2.process(&contents); compare_cells(parser, &parser2); |