aboutsummaryrefslogtreecommitdiffstats
path: root/tests/csi.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-05 12:53:25 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-05 13:26:49 -0500
commit2e7f1686d719497d9b2d2d2c8ffba20e6c8214bd (patch)
tree8f31cb37faaec73bdf4a5253f0c34bceb3cc6d6f /tests/csi.rs
parente12f9d9ee4e6b902436d0282e4a1e47ed7d54d6c (diff)
downloadvt100-rust-2e7f1686d719497d9b2d2d2c8ffba20e6c8214bd.tar.gz
vt100-rust-2e7f1686d719497d9b2d2d2c8ffba20e6c8214bd.zip
adjust the way window contents are reported
contents and contents_formatted now only allow getting the entire terminal contents, and for any other uses we now provide rows and rows_formatted. the reasoning here is that it wasn't particularly useful to return newline (or crlf) separated lines when not drawing the full terminal, since it's not like you can send those to the terminal in any meaningful way anyway (like, if you wanted to draw a subset of the terminal state, you'll almost certainly need to be doing explicit positioning on your own, since crlf is only actually correct if you're drawing the screen subset in the upper left hand corner of the screen). with this, you can draw each (subset of a) line individually, and reposition the cursor in whatever way makes sense in between drawing the lines.
Diffstat (limited to 'tests/csi.rs')
-rw-r--r--tests/csi.rs128
1 files changed, 58 insertions, 70 deletions
diff --git a/tests/csi.rs b/tests/csi.rs
index 85bbcab..1310dac 100644
--- a/tests/csi.rs
+++ b/tests/csi.rs
@@ -91,68 +91,68 @@ fn relative_movement() {
#[test]
fn ed() {
let mut parser = vt100::Parser::new(24, 80);
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[10;12H\x1b[0J");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"foo\n\n\n\n bar\n\n\n\n\n ba"
);
parser.process(b"\x1b[5;6H\x1b[1J");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n r\n\n\n\n\n ba"
);
parser.process(b"\x1b[7;7H\x1b[2J");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"\x1b[2J\x1b[H");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[10;12H\x1b[J");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"foo\n\n\n\n bar\n\n\n\n\n ba"
);
parser.process(b"\x1b[2J\x1b[H");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[10;12H\x1b[?0J");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"foo\n\n\n\n bar\n\n\n\n\n ba"
);
parser.process(b"\x1b[5;6H\x1b[?1J");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n r\n\n\n\n\n ba"
);
parser.process(b"\x1b[7;7H\x1b[?2J");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"\x1b[2J\x1b[H");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[10;12H\x1b[?J");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"foo\n\n\n\n bar\n\n\n\n\n ba"
);
}
@@ -160,71 +160,71 @@ fn ed() {
#[test]
fn el() {
let mut parser = vt100::Parser::new(24, 80);
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"foo\x1b[5;5Hbarbar\x1b[10;10Hbazbaz\x1b[20;20Hquux");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[5;8H\x1b[0K");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n bar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[10;12H\x1b[1K");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[20;22H\x1b[2K");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"foo\n\n\n\n bar\n\n\n\n\n baz"
);
parser.process(b"\x1b[1;2H\x1b[K");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"f\n\n\n\n bar\n\n\n\n\n baz"
);
parser.process(b"\x1b[2J\x1b[H");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"foo\x1b[5;5Hbarbar\x1b[10;10Hbazbaz\x1b[20;20Hquux");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[5;8H\x1b[?0K");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n bar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[10;12H\x1b[?1K");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
+ assert_eq!(parser.screen().contents(), "foo\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n quux");
parser.process(b"\x1b[20;22H\x1b[?2K");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"foo\n\n\n\n bar\n\n\n\n\n baz"
);
parser.process(b"\x1b[1;2H\x1b[?K");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"f\n\n\n\n bar\n\n\n\n\n baz"
);
parser.process(b"\x1b[2J\x1b[H");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
);
parser.process(b"\x1b[1;21H\x1b[K");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"12345678901234567890\n12345678901234567890"
);
parser.process(b"\x1b[1;10H\x1b[1K");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
" 1234567890\n12345678901234567890"
);
}
@@ -232,158 +232,146 @@ fn el() {
#[test]
fn ich_dch_ech() {
let mut parser = vt100::Parser::new(24, 80);
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"\x1b[10;10Hfoobar");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n foobar"
);
parser.process(b"\x1b[10;12H\x1b[3@");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n fo obar"
);
assert_eq!(parser.screen().cursor_position(), (9, 11));
parser.process(b"\x1b[4P");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n fobar"
);
assert_eq!(parser.screen().cursor_position(), (9, 11));
parser.process(b"\x1b[100@");
- assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
- "\n\n\n\n\n\n\n\n\n fo"
- );
+ assert_eq!(parser.screen().contents(), "\n\n\n\n\n\n\n\n\n fo");
assert_eq!(parser.screen().cursor_position(), (9, 11));
parser.process(b"obar");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n foobar"
);
assert_eq!(parser.screen().cursor_position(), (9, 15));
parser.process(b"\x1b[10;12H\x1b[100P");
- assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
- "\n\n\n\n\n\n\n\n\n fo"
- );
+ assert_eq!(parser.screen().contents(), "\n\n\n\n\n\n\n\n\n fo");
assert_eq!(parser.screen().cursor_position(), (9, 11));
parser.process(b"obar");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n foobar"
);
assert_eq!(parser.screen().cursor_position(), (9, 15));
parser.process(b"\x1b[10;13H\x1b[X");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n foo ar"
);
assert_eq!(parser.screen().cursor_position(), (9, 12));
parser.process(b"\x1b[10;11H\x1b[4X");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n f r"
);
assert_eq!(parser.screen().cursor_position(), (9, 10));
parser.process(b"\x1b[10;11H\x1b[400X");
- assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
- "\n\n\n\n\n\n\n\n\n f"
- );
+ assert_eq!(parser.screen().contents(), "\n\n\n\n\n\n\n\n\n f");
assert_eq!(parser.screen().cursor_position(), (9, 10));
}
#[test]
fn il_dl() {
let mut parser = vt100::Parser::new(24, 80);
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
parser.process(b"\x1b[10;10Hfoobar\x1b[3D");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n foobar"
);
assert_eq!(parser.screen().cursor_position(), (9, 12));
parser.process(b"\x1b[L");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n\n foobar"
);
assert_eq!(parser.screen().cursor_position(), (9, 12));
parser.process(b"\x1b[3L");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n\n\n\n\n foobar"
);
assert_eq!(parser.screen().cursor_position(), (9, 12));
parser.process(b"\x1b[500L");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
assert_eq!(parser.screen().cursor_position(), (9, 12));
parser.process(b"\x1b[10;10Hfoobar\x1b[3D\x1b[6A");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n\n foobar"
);
assert_eq!(parser.screen().cursor_position(), (3, 12));
parser.process(b"\x1b[M");
assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
+ parser.screen().contents(),
"\n\n\n\n\n\n\n\n foobar"
);
assert_eq!(parser.screen().cursor_position(), (3, 12));
parser.process(b"\x1b[3M");
- assert_eq!(
- parser.screen().contents(0, 0, 23, 79),
- "\n\n\n\n\n foobar"
- );
+ assert_eq!(parser.screen().contents(), "\n\n\n\n\n foobar");
assert_eq!(parser.screen().cursor_position(), (3, 12));
parser.process(b"\x1b[500M");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ assert_eq!(parser.screen().contents(), "");
assert_eq!(parser.screen().cursor_position(), (3, 12));
}
#[test]
fn scroll() {
let mut parser = vt100::Parser::new(24, 80);
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "");
+ 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");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\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");
parser.process(b"\x1b[15;15H");
assert_eq!(parser.screen().cursor_position(), (14, 14));
parser.process(b"\x1b[S");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24");
+ assert_eq!(parser.screen().contents(), "2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24");
assert_eq!(parser.screen().cursor_position(), (14, 14));
parser.process(b"\x1b[3S");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24");
+ assert_eq!(parser.screen().contents(), "5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24");
assert_eq!(parser.screen().cursor_position(), (14, 14));
parser.process(b"\x1b[T");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24");
+ assert_eq!(parser.screen().contents(), "\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24");
assert_eq!(parser.screen().cursor_position(), (14, 14));
parser.process(b"\x1b[5T");
- assert_eq!(parser.screen().contents(0, 0, 23, 79), "\n\n\n\n\n\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22");
+ assert_eq!(parser.screen().contents(), "\n\n\n\n\n\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22");
assert_eq!(parser.screen().cursor_position(), (14, 14));
}