diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-06 13:30:50 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-06 13:30:50 -0500 |
commit | e21d3005c5ec2304f9f016cd506da93c78da5e51 (patch) | |
tree | a525767295c39544cc25926f15dde951abd59e8b /tests/window_contents.rs | |
parent | d778408be8b12fcc16a8fcaccde49bef927f22e0 (diff) | |
download | vt100-rust-e21d3005c5ec2304f9f016cd506da93c78da5e51.tar.gz vt100-rust-e21d3005c5ec2304f9f016cd506da93c78da5e51.zip |
also add a rows_diff method
Diffstat (limited to 'tests/window_contents.rs')
-rw-r--r-- | tests/window_contents.rs | 88 |
1 files changed, 72 insertions, 16 deletions
diff --git a/tests/window_contents.rs b/tests/window_contents.rs index 1d351cb..07a656d 100644 --- a/tests/window_contents.rs +++ b/tests/window_contents.rs @@ -72,8 +72,9 @@ fn empty_cells() { #[test] fn rows() { let mut parser = vt100::Parser::new(24, 80); + let screen1 = parser.screen().clone(); assert_eq!( - parser.screen().rows(0, 80).collect::<Vec<String>>(), + screen1.rows(0, 80).collect::<Vec<String>>(), vec![ String::new(), String::new(), @@ -102,10 +103,7 @@ fn rows() { ] ); assert_eq!( - parser - .screen() - .rows_formatted(0, 80) - .collect::<Vec<Vec<u8>>>(), + screen1.rows_formatted(0, 80).collect::<Vec<Vec<u8>>>(), vec![ vec![], vec![], @@ -134,7 +132,7 @@ fn rows() { ] ); assert_eq!( - parser.screen().rows(5, 15).collect::<Vec<String>>(), + screen1.rows(5, 15).collect::<Vec<String>>(), vec![ String::new(), String::new(), @@ -163,10 +161,7 @@ fn rows() { ] ); assert_eq!( - parser - .screen() - .rows_formatted(5, 15) - .collect::<Vec<Vec<u8>>>(), + screen1.rows_formatted(5, 15).collect::<Vec<Vec<u8>>>(), vec![ vec![], vec![], @@ -197,8 +192,9 @@ fn rows() { parser .process(b"\x1b[31mfoo\x1b[10;10H\x1b[32mbar\x1b[20;20H\x1b[33mbaz"); + let screen2 = parser.screen().clone(); assert_eq!( - parser.screen().rows(0, 80).collect::<Vec<String>>(), + screen2.rows(0, 80).collect::<Vec<String>>(), vec![ "foo".to_string(), String::new(), @@ -227,8 +223,7 @@ fn rows() { ] ); assert_eq!( - parser - .screen() + screen2 .rows_formatted(0, 80) .collect::<Vec<Vec<u8>>>(), vec![ @@ -259,7 +254,7 @@ fn rows() { ] ); assert_eq!( - parser.screen().rows(5, 15).collect::<Vec<String>>(), + screen2.rows(5, 15).collect::<Vec<String>>(), vec![ String::new(), String::new(), @@ -288,8 +283,7 @@ fn rows() { ] ); assert_eq!( - parser - .screen() + screen2 .rows_formatted(5, 15) .collect::<Vec<Vec<u8>>>(), vec![ @@ -319,6 +313,68 @@ fn rows() { vec![], ] ); + + assert_eq!( + screen2.rows_diff(&screen1, 0, 80).collect::<Vec<Vec<u8>>>(), + vec![ + b"\x1b[31mfoo".to_vec(), + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + b"\x1b[9C\x1b[32mbar".to_vec(), + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + b"\x1b[19C\x1b[33mbaz".to_vec(), + vec![], + vec![], + vec![], + vec![], + ] + ); + + parser.process(b"\x1b[10;11Ho"); + let screen3 = parser.screen().clone(); + assert_eq!( + screen3.rows_diff(&screen2, 0, 80).collect::<Vec<Vec<u8>>>(), + vec![ + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + b"\x1b[10C\x1b[33mo".to_vec(), + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + vec![], + ] + ); } #[test] |