diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/csi.rs | 36 | ||||
-rw-r--r-- | tests/escape.rs | 6 | ||||
-rw-r--r-- | tests/scroll.rs | 18 | ||||
-rw-r--r-- | tests/text.rs | 10 | ||||
-rw-r--r-- | tests/window_contents.rs | 39 |
5 files changed, 54 insertions, 55 deletions
diff --git a/tests/csi.rs b/tests/csi.rs index 1c1ed46..4f06cd3 100644 --- a/tests/csi.rs +++ b/tests/csi.rs @@ -207,12 +207,10 @@ fn ed() { assert_eq!( parser.screen().contents_formatted(), format!( - "\x1b[?25h\x1b[m\x1b[H\x1b[J{}{}\x1b[41m{}\r\n{}{}\x1b[5;5H", - "\r\n".repeat(4), - "\x1b[C".repeat(4), - "\x1b[X\x1b[C".repeat(76), - format!("{}\r\n", "\x1b[X\x1b[C".repeat(80)).repeat(18), - "\x1b[X\x1b[C".repeat(80), + "\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[5;5H\x1b[41m{}\x1b[X\r\n{}{}\x1b[X\x1b[5;5H", + "\x1b[X\x1b[C".repeat(75), + format!("{}\x1b[X\r\n", "\x1b[X\x1b[C".repeat(79)).repeat(18), + "\x1b[X\x1b[C".repeat(79), ) .as_bytes() ); @@ -259,9 +257,9 @@ fn ed() { assert_eq!( parser.screen().contents_formatted(), format!( - "\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[41m{}{}\x1b[5;5H", - format!("{}\r\n", "\x1b[X\x1b[C".repeat(80)).repeat(4), - "\x1b[X\x1b[C".repeat(5), + "\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[41m{}{}\x1b[X", + format!("{}\x1b[X\r\n", "\x1b[X\x1b[C".repeat(79)).repeat(4), + "\x1b[X\x1b[C".repeat(4), ) .as_bytes() ); @@ -309,8 +307,8 @@ fn ed() { parser.screen().contents_formatted(), format!( "\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[41m{}{}\x1b[5;5H", - format!("{}\r\n", "\x1b[X\x1b[C".repeat(80)).repeat(23), - "\x1b[X\x1b[C".repeat(80), + format!("{}\x1b[X\r\n", "\x1b[X\x1b[C".repeat(79)).repeat(23), + format!("{}\x1b[X", "\x1b[X\x1b[C".repeat(79)), ) .as_bytes() ); @@ -422,10 +420,8 @@ fn el() { assert_eq!( parser.screen().contents_formatted(), format!( - "\x1b[?25h\x1b[m\x1b[H\x1b[J{}{}\x1b[41m{}\x1b[5;5H", - "\r\n".repeat(4), - "\x1b[C".repeat(4), - "\x1b[X\x1b[C".repeat(76) + "\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[5;5H\x1b[41m{}\x1b[X\x1b[5;5H", + "\x1b[X\x1b[C".repeat(75) ) .as_bytes() ); @@ -464,9 +460,8 @@ fn el() { assert_eq!( parser.screen().contents_formatted(), format!( - "\x1b[?25h\x1b[m\x1b[H\x1b[J{}\x1b[41m{}\x1b[5;5H", - "\r\n".repeat(4), - "\x1b[X\x1b[C".repeat(5), + "\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[5;1H\x1b[41m{}\x1b[X", + "\x1b[X\x1b[C".repeat(4), ) .as_bytes() ); @@ -505,9 +500,8 @@ fn el() { assert_eq!( parser.screen().contents_formatted(), format!( - "\x1b[?25h\x1b[m\x1b[H\x1b[J{}\x1b[41m{}\x1b[5;5H", - "\r\n".repeat(4), - "\x1b[X\x1b[C".repeat(80), + "\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[5;1H\x1b[41m{}\x1b[X\x1b[5;5H", + "\x1b[X\x1b[C".repeat(79), ) .as_bytes() ); diff --git a/tests/escape.rs b/tests/escape.rs index 7a05491..1800ce8 100644 --- a/tests/escape.rs +++ b/tests/escape.rs @@ -153,20 +153,20 @@ fn decsc() { assert_eq!(parser.screen().cursor_position(), (4, 3)); assert_eq!( parser.screen().contents_formatted(), - b"\x1b[?25h\x1b[m\x1b[H\x1b[J\r\n\r\n\r\n\r\n\x1b[31mfoo" + b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[5;1H\x1b[31mfoo" ); parser.process(b"\x1b[32m\x1b[?6lbar"); assert_eq!(parser.screen().cursor_position(), (0, 3)); assert_eq!( parser.screen().contents_formatted(), - &b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[32mbar\r\n\r\n\r\n\r\n\x1b[31mfoo\x1b[1;4H"[..] + &b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[32mbar\x1b[5;1H\x1b[31mfoo\x1b[1;4H"[..] ); parser.process(b"\x1b8\x1b[Hz"); assert_eq!(parser.screen().cursor_position(), (4, 1)); assert_eq!( parser.screen().contents_formatted(), - &b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[32mbar\r\n\r\n\r\n\r\n\x1b[31mzoo\x1b[5;2H"[..] + &b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[32mbar\x1b[5;1H\x1b[31mzoo\x1b[5;2H"[..] ); } diff --git a/tests/scroll.rs b/tests/scroll.rs index 4bbe1e9..7c75c92 100644 --- a/tests/scroll.rs +++ b/tests/scroll.rs @@ -153,3 +153,21 @@ fn scrollback() { assert_eq!(parser.scroll_pos(), 7); assert_eq!(parser.screen().contents(), "10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33"); } + +#[test] +fn edge_of_screen() { + let mut parser = vt100::Parser::new(24, 80, 0); + let screen = parser.screen().clone(); + + parser.process(b"\x1b[31m\x1b[24;75Hfooba\x08r\x08\x1b[1@a"); + assert_eq!(parser.screen().cursor_position(), (23, 79)); + assert_eq!(parser.screen().contents(), "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n foobar"); + assert_eq!( + parser.screen().contents_formatted(), + &b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[24;75H\x1b[31mfoobar\x1b[24;80H"[..] + ); + assert_eq!( + parser.screen().contents_diff(&screen), + b"\x1b[24;75H\x1b[31mfoobar\x1b[24;80H" + ); +} diff --git a/tests/text.rs b/tests/text.rs index 3cd5a78..8578567 100644 --- a/tests/text.rs +++ b/tests/text.rs @@ -64,7 +64,7 @@ fn wide() { ); assert_eq!( parser.screen().contents_diff(&screen), - "\x1b[m\x1b[Haデbネ".as_bytes() + "\x1b[maデbネ".as_bytes() ); let screen = parser.screen().clone(); @@ -77,7 +77,7 @@ fn wide() { ); assert_eq!( parser.screen().contents_diff(&screen), - "\x1b[m\x1b[H\x1b[3Cc".as_bytes() + "\x1b[m\x1b[1;4Hc".as_bytes() ); let screen = parser.screen().clone(); @@ -90,7 +90,7 @@ fn wide() { ); assert_eq!( parser.screen().contents_diff(&screen), - "\x1b[m\x1b[H\x1b[6Cfoobar".as_bytes() + "\x1b[m\x1b[2Cfoobar".as_bytes() ); let screen = parser.screen().clone(); @@ -103,7 +103,7 @@ fn wide() { ); assert_eq!( parser.screen().contents_diff(&screen), - "\x1b[m\x1b[Hデcネfo\x1b[Cbar\x1b[X\x1b[C\x1b[1;12H".as_bytes() + "\x1b[m\x1b[Hデcネfo\x1b[Cbar\x1b[X".as_bytes() ); let screen = parser.screen().clone(); @@ -129,7 +129,7 @@ fn wide() { ); assert_eq!( parser.screen().contents_diff(&screen), - "\x1b[m\x1b[Hデcネfo\x1b[Cbar\x1b[X\x1b[C\x1b[1;12H".as_bytes() + "\x1b[m\x1b[Hデcネfo\x1b[Cbar\x1b[X".as_bytes() ); } diff --git a/tests/window_contents.rs b/tests/window_contents.rs index d7a3b13..0df62ef 100644 --- a/tests/window_contents.rs +++ b/tests/window_contents.rs @@ -71,7 +71,7 @@ fn empty_cells() { assert_eq!(parser.screen().contents(), "foo bar"); assert_eq!( parser.screen().contents_formatted(), - &b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[31mfoo\x1b[m\x1b[C\x1b[C\x1b[32m bar\x1b[1;4H"[..] + &b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[31mfoo\x1b[2C\x1b[32m bar\x1b[1;4H"[..] ); } @@ -87,7 +87,7 @@ fn cursor_positioning() { parser.screen().contents_formatted(), b"\x1b[?25h\x1b[m\x1b[H\x1b[J:" ); - assert_eq!(parser.screen().contents_diff(&screen1), b"\x1b[m\x1b[H:"); + assert_eq!(parser.screen().contents_diff(&screen1), b"\x1b[m:"); parser.process(b"a"); let screen3 = parser.screen().clone(); @@ -96,10 +96,7 @@ fn cursor_positioning() { parser.screen().contents_formatted(), b"\x1b[?25h\x1b[m\x1b[H\x1b[J:a" ); - assert_eq!( - parser.screen().contents_diff(&screen2), - b"\x1b[m\x1b[H\x1b[Ca" - ); + assert_eq!(parser.screen().contents_diff(&screen2), b"\x1b[ma"); parser.process(b"\x1b[1;2H\x1b[K"); assert_eq!(parser.screen().cursor_position(), (0, 1)); @@ -109,7 +106,7 @@ fn cursor_positioning() { ); assert_eq!( parser.screen().contents_diff(&screen3), - b"\x1b[m\x1b[H\x1b[C\x1b[X\x1b[C\x1b[1;2H" + b"\x1b[m\x1b[1;2H\x1b[X" ); } @@ -267,9 +264,7 @@ fn rows() { ] ); assert_eq!( - screen2 - .rows_formatted(0, 80) - .collect::<Vec<Vec<u8>>>(), + screen2.rows_formatted(0, 80).collect::<Vec<Vec<u8>>>(), vec![ b"\x1b[31mfoo".to_vec(), vec![], @@ -280,7 +275,7 @@ fn rows() { 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(), + b"\x1b[9C\x1b[32mbar".to_vec(), vec![], vec![], vec![], @@ -290,7 +285,7 @@ fn rows() { 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(), + b"\x1b[19C\x1b[33mbaz".to_vec(), vec![], vec![], vec![], @@ -327,9 +322,7 @@ fn rows() { ] ); assert_eq!( - screen2 - .rows_formatted(5, 15) - .collect::<Vec<Vec<u8>>>(), + screen2.rows_formatted(5, 15).collect::<Vec<Vec<u8>>>(), vec![ vec![], vec![], @@ -340,7 +333,7 @@ fn rows() { vec![], vec![], vec![], - b"\x1b[C\x1b[C\x1b[C\x1b[C\x1b[32mbar".to_vec(), + b"\x1b[4C\x1b[32mbar".to_vec(), vec![], vec![], vec![], @@ -350,7 +343,7 @@ fn rows() { 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(), + b"\x1b[14C\x1b[33mb".to_vec(), vec![], vec![], vec![], @@ -429,7 +422,7 @@ fn diff() { let screen2 = parser.screen().clone(); assert_eq!( screen2.contents_diff(&screen1), - b"\x1b[m\x1b[H\x1b[5C\x1b[32m bar" + b"\x1b[m\x1b[5C\x1b[32m bar" ); compare_diff(&screen1, &screen2, b""); @@ -440,18 +433,12 @@ fn diff() { parser.process(b"\x1b[1;7H\x1b[32mbaz"); let screen4 = parser.screen().clone(); - assert_eq!( - screen4.contents_diff(&screen3), - b"\x1b[m\x1b[H\x1b[8C\x1b[32mz" - ); + assert_eq!(screen4.contents_diff(&screen3), b"\x1b[m\x1b[5C\x1b[32mz"); compare_diff(&screen3, &screen4, b"\x1b[5C\x1b[32m bar\x1b[H\x1b[31mfoo"); parser.process(b"\x1b[1;8H\x1b[X"); let screen5 = parser.screen().clone(); - assert_eq!( - screen5.contents_diff(&screen4), - b"\x1b[m\x1b[H\x1b[7C\x1b[X\x1b[C\x1b[1;8H" - ); + assert_eq!(screen5.contents_diff(&screen4), b"\x1b[m\x1b[1;8H\x1b[X"); compare_diff( &screen4, &screen5, |