From 1d33fb3644b3483f7840e2eb9051a0c697326d63 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 3 Nov 2019 14:35:07 -0500 Subject: fix off-by-one in erase_row_backward fixes behavior of CSI 1 J and CSI 1 K (which are not particularly commonly used, which is why this was missed before) --- tests/csi.rs | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'tests/csi.rs') diff --git a/tests/csi.rs b/tests/csi.rs index 75e4741..5dcd88c 100644 --- a/tests/csi.rs +++ b/tests/csi.rs @@ -102,7 +102,7 @@ fn ed() { screen.process(b"\x1b[10;12H\x1b[0J"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.process(b"\x1b[5;7H\x1b[1J"); + screen.process(b"\x1b[5;6H\x1b[1J"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n r\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" @@ -138,7 +138,7 @@ fn ed() { screen.process(b"\x1b[10;12H\x1b[?0J"); assert_eq!(screen.window_contents(0, 0, 23, 79), "foo\n\n\n\n bar\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - screen.process(b"\x1b[5;7H\x1b[?1J"); + screen.process(b"\x1b[5;6H\x1b[?1J"); assert_eq!( screen.window_contents(0, 0, 23, 79), "\n\n\n\n r\n\n\n\n\n ba\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" @@ -177,7 +177,7 @@ fn el() { screen.process(b"\x1b[5;8H\x1b[0K"); assert_eq!(screen.window_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\n\n\n\n\n"); - screen.process(b"\x1b[10;13H\x1b[1K"); + screen.process(b"\x1b[10;12H\x1b[1K"); assert_eq!(screen.window_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\n\n\n\n\n"); screen.process(b"\x1b[20;22H\x1b[2K"); @@ -198,7 +198,7 @@ fn el() { screen.process(b"\x1b[5;8H\x1b[?0K"); assert_eq!(screen.window_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\n\n\n\n\n"); - screen.process(b"\x1b[10;13H\x1b[?1K"); + screen.process(b"\x1b[10;12H\x1b[?1K"); assert_eq!(screen.window_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\n\n\n\n\n"); screen.process(b"\x1b[20;22H\x1b[?2K"); @@ -206,6 +206,30 @@ fn el() { screen.process(b"\x1b[1;2H\x1b[?K"); assert_eq!(screen.window_contents(0, 0, 23, 79), "f\n\n\n\n bar\n\n\n\n\n baz\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); + + screen.process(b"\x1b[2J\x1b[H"); + 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" + ); + + screen.process(b"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"); + assert_eq!( + screen.window_contents(0, 0, 23, 79), + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + ); + + screen.process(b"\x1b[1;21H\x1b[K"); + assert_eq!( + screen.window_contents(0, 0, 23, 79), + "12345678901234567890\n12345678901234567890\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + ); + + screen.process(b"\x1b[1;10H\x1b[1K"); + assert_eq!( + screen.window_contents(0, 0, 23, 79), + " 1234567890\n12345678901234567890\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + ); } #[test] -- cgit v1.2.3-54-g00ecf