diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-02 13:00:42 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-02 13:00:42 -0400 |
commit | 33f866f5056549ea585d97f2d9f620aeb7abcbe6 (patch) | |
tree | 6414585af86f46d92f7f74355d7b7ebeb427b0ed /tests | |
parent | e50e3c4fe311d03d90c7bfb43b7612317fe183c0 (diff) | |
download | vt100-rust-33f866f5056549ea585d97f2d9f620aeb7abcbe6.tar.gz vt100-rust-33f866f5056549ea585d97f2d9f620aeb7abcbe6.zip |
improve alternate screen handling
Diffstat (limited to 'tests')
-rw-r--r-- | tests/mode.rs | 81 |
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()); } |