aboutsummaryrefslogtreecommitdiffstats
path: root/tests/csi.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/csi.rs')
-rw-r--r--tests/csi.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/csi.rs b/tests/csi.rs
index 7a409b6..460a03d 100644
--- a/tests/csi.rs
+++ b/tests/csi.rs
@@ -44,3 +44,43 @@ fn il_dl() {
fn scroll() {
helpers::fixture("scroll");
}
+
+#[test]
+fn xtwinops() {
+ struct Callbacks;
+ impl vt100::Callbacks for Callbacks {
+ fn resize(
+ &mut self,
+ screen: &mut vt100::Screen,
+ (rows, cols): (u16, u16),
+ ) {
+ screen.set_size(rows, cols);
+ }
+ }
+
+ let mut vt = vt100::Parser::default();
+ assert_eq!(vt.screen().size(), (24, 80));
+ vt.process_cb(b"\x1b[8;24;80t", &mut Callbacks);
+ assert_eq!(vt.screen().size(), (24, 80));
+ vt.process_cb(b"\x1b[8t", &mut Callbacks);
+ assert_eq!(vt.screen().size(), (24, 80));
+ vt.process_cb(b"\x1b[8;80;24t", &mut Callbacks);
+ assert_eq!(vt.screen().size(), (80, 24));
+ vt.process_cb(b"\x1b[8;24t", &mut Callbacks);
+ assert_eq!(vt.screen().size(), (24, 24));
+
+ let mut vt = vt100::Parser::default();
+ assert_eq!(vt.screen().size(), (24, 80));
+ vt.process_cb(b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", &mut Callbacks);
+ assert_eq!(vt.screen().rows(0, 80).next().unwrap(), "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+ assert_eq!(vt.screen().rows(0, 80).nth(1).unwrap(), "aaaaaaaaaa");
+ vt.process_cb(
+ b"\x1b[H\x1b[8;24;15tbbbbbbbbbbbbbbbbbbbb\x1b[8;24;80tcccccccccccccccccccc",
+ &mut Callbacks,
+ );
+ assert_eq!(vt.screen().rows(0, 80).next().unwrap(), "bbbbbbbbbbbbbbb");
+ assert_eq!(
+ vt.screen().rows(0, 80).nth(1).unwrap(),
+ "bbbbbcccccccccccccccccccc"
+ );
+}