aboutsummaryrefslogtreecommitdiffstats
path: root/tests/window_contents.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-28 14:57:07 -0500
committerJesse Luehrs <doy@tozt.net>2019-12-05 12:54:34 -0500
commit971b744c9c7c2c3dc9f055f69c5630ca11f0a09e (patch)
tree8b8c8e88d6dbd809cc6bcd5a82ef512c6e3d9f65 /tests/window_contents.rs
parent42b25717605bcb8206f71722f09d02ef4b4275f2 (diff)
downloadvt100-rust-971b744c9c7c2c3dc9f055f69c5630ca11f0a09e.tar.gz
vt100-rust-971b744c9c7c2c3dc9f055f69c5630ca11f0a09e.zip
fix a couple more issues with end of line behavior
Diffstat (limited to 'tests/window_contents.rs')
-rw-r--r--tests/window_contents.rs51
1 files changed, 45 insertions, 6 deletions
diff --git a/tests/window_contents.rs b/tests/window_contents.rs
index 34f5a66..352ffd5 100644
--- a/tests/window_contents.rs
+++ b/tests/window_contents.rs
@@ -80,33 +80,72 @@ fn empty_cells() {
#[test]
fn cursor_positioning() {
let mut parser = vt100::Parser::default();
- let screen1 = parser.screen().clone();
+ let screen = parser.screen().clone();
parser.process(b":\x1b[K");
- let screen2 = parser.screen().clone();
assert_eq!(parser.screen().cursor_position(), (0, 1));
assert_eq!(
parser.screen().contents_formatted(),
b"\x1b[?25h\x1b[m\x1b[H\x1b[J:"
);
- assert_eq!(parser.screen().contents_diff(&screen1), b":");
+ assert_eq!(parser.screen().contents_diff(&screen), b":");
+ let screen = parser.screen().clone();
parser.process(b"a");
- let screen3 = parser.screen().clone();
assert_eq!(parser.screen().cursor_position(), (0, 2));
assert_eq!(
parser.screen().contents_formatted(),
b"\x1b[?25h\x1b[m\x1b[H\x1b[J:a"
);
- assert_eq!(parser.screen().contents_diff(&screen2), b"a");
+ assert_eq!(parser.screen().contents_diff(&screen), b"a");
+ let screen = parser.screen().clone();
parser.process(b"\x1b[1;2H\x1b[K");
assert_eq!(parser.screen().cursor_position(), (0, 1));
assert_eq!(
parser.screen().contents_formatted(),
b"\x1b[?25h\x1b[m\x1b[H\x1b[J:"
);
- assert_eq!(parser.screen().contents_diff(&screen3), b"\x1b[1;2H\x1b[K");
+ assert_eq!(parser.screen().contents_diff(&screen), b"\x1b[1;2H\x1b[K");
+
+ let screen = parser.screen().clone();
+ parser.process(b"\x1b[H\x1b[J\x1b[4;80H");
+ assert_eq!(parser.screen().cursor_position(), (3, 79));
+ assert_eq!(
+ parser.screen().contents_formatted(),
+ b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[4;80H"
+ );
+ assert_eq!(
+ parser.screen().contents_diff(&screen),
+ b"\x1b[H\x1b[K\x1b[4;80H"
+ );
+
+ let screen = parser.screen().clone();
+ parser.process(b"a");
+ assert_eq!(parser.screen().cursor_position(), (3, 80));
+ assert_eq!(
+ parser.screen().contents_formatted(),
+ b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[4;80Ha"
+ );
+ assert_eq!(parser.screen().contents_diff(&screen), b"a");
+
+ let screen = parser.screen().clone();
+ parser.process(b"\n");
+ assert_eq!(parser.screen().cursor_position(), (4, 80));
+ assert_eq!(
+ parser.screen().contents_formatted(),
+ b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[4;80Ha\n"
+ );
+ assert_eq!(parser.screen().contents_diff(&screen), b"\n");
+
+ let screen = parser.screen().clone();
+ parser.process(b"b");
+ assert_eq!(parser.screen().cursor_position(), (5, 1));
+ assert_eq!(
+ parser.screen().contents_formatted(),
+ b"\x1b[?25h\x1b[m\x1b[H\x1b[J\x1b[4;80Ha\x1b[6;1Hb"
+ );
+ assert_eq!(parser.screen().contents_diff(&screen), b"\r\nb");
}
#[test]