aboutsummaryrefslogtreecommitdiffstats
path: root/tests/mode.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-02 13:00:42 -0400
committerJesse Luehrs <doy@tozt.net>2019-11-02 13:00:42 -0400
commit33f866f5056549ea585d97f2d9f620aeb7abcbe6 (patch)
tree6414585af86f46d92f7f74355d7b7ebeb427b0ed /tests/mode.rs
parente50e3c4fe311d03d90c7bfb43b7612317fe183c0 (diff)
downloadvt100-rust-33f866f5056549ea585d97f2d9f620aeb7abcbe6.tar.gz
vt100-rust-33f866f5056549ea585d97f2d9f620aeb7abcbe6.zip
improve alternate screen handling
Diffstat (limited to 'tests/mode.rs')
-rw-r--r--tests/mode.rs81
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/mode.rs b/tests/mode.rs
index fb97e43..d6807a9 100644
--- a/tests/mode.rs
+++ b/tests/mode.rs
@@ -278,21 +278,102 @@ fn modes() {
#[test]
fn alternate_buffer() {
let mut screen = vt100::Screen::new(24, 80);
+
+ // 47
+
+ screen.process(b"\x1bc");
+ assert_eq!(
+ screen.window_contents(0, 0, 23, 79),
+ "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+ );
+ assert_eq!(screen.cursor_position(), (0, 0));
+ assert!(!screen.alternate_buffer_active());
+
screen.process(b"\x1b[m\x1b[2J\x1b[H1\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!(screen.window_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\n");
+ assert_eq!(screen.cursor_position(), (23, 2));
+ assert!(!screen.alternate_buffer_active());
+
+ screen.process(b"\x1b[?47h");
+ assert_eq!(
+ screen.window_contents(0, 0, 23, 79),
+ "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+ );
+ assert_eq!(screen.cursor_position(), (0, 0));
+ assert!(screen.alternate_buffer_active());
+
+ screen.process(b"foobar");
+ assert_eq!(
+ screen.window_contents(0, 0, 23, 79),
+ "foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+ );
+ assert_eq!(screen.cursor_position(), (0, 6));
+ assert!(screen.alternate_buffer_active());
+
+ screen.process(b"\x1b[?47l");
+ assert_eq!(screen.window_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\n");
+ assert_eq!(screen.cursor_position(), (23, 2));
assert!(!screen.alternate_buffer_active());
+
+ screen.process(b"\x1b[?47h");
+ assert_eq!(
+ screen.window_contents(0, 0, 23, 79),
+ "foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+ );
+ assert_eq!(screen.cursor_position(), (0, 6));
+ assert!(screen.alternate_buffer_active());
+
+ screen.process(b"\x1b[?47l");
+ assert_eq!(screen.window_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\n");
+ assert_eq!(screen.cursor_position(), (23, 2));
+ assert!(!screen.alternate_buffer_active());
+
+ // 1049
+
+ screen.process(b"\x1bc");
+ assert_eq!(
+ screen.window_contents(0, 0, 23, 79),
+ "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+ );
+ assert_eq!(screen.cursor_position(), (0, 0));
+ assert!(!screen.alternate_buffer_active());
+
+ screen.process(b"\x1b[m\x1b[2J\x1b[H1\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!(screen.window_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\n");
+ assert_eq!(screen.cursor_position(), (23, 2));
+ assert!(!screen.alternate_buffer_active());
+
screen.process(b"\x1b[?1049h");
assert_eq!(
screen.window_contents(0, 0, 23, 79),
"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
);
+ assert_eq!(screen.cursor_position(), (0, 0));
assert!(screen.alternate_buffer_active());
+
screen.process(b"foobar");
assert_eq!(
screen.window_contents(0, 0, 23, 79),
"foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
);
+ assert_eq!(screen.cursor_position(), (0, 6));
+ assert!(screen.alternate_buffer_active());
+
+ screen.process(b"\x1b[?1049l");
+ assert_eq!(screen.window_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\n");
+ assert_eq!(screen.cursor_position(), (23, 2));
+ assert!(!screen.alternate_buffer_active());
+
+ screen.process(b"\x1b[?1049h");
+ assert_eq!(
+ screen.window_contents(0, 0, 23, 79),
+ "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+ );
+ assert_eq!(screen.cursor_position(), (0, 0));
+ assert!(screen.alternate_buffer_active());
+
screen.process(b"\x1b[?1049l");
assert_eq!(screen.window_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\n");
+ assert_eq!(screen.cursor_position(), (23, 2));
assert!(!screen.alternate_buffer_active());
}