From 68c36be2e26813a2a3d7210ae82824de06b3d3ee Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 8 Mar 2023 23:43:23 -0500 Subject: implement callback for terminal resize request --- tests/csi.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'tests') 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" + ); +} -- cgit v1.2.3-54-g00ecf