diff options
-rw-r--r-- | src/grid.rs | 2 | ||||
-rw-r--r-- | tests/csi.rs | 32 |
2 files changed, 29 insertions, 5 deletions
diff --git a/src/grid.rs b/src/grid.rs index 7e7b9ed..e6098a9 100644 --- a/src/grid.rs +++ b/src/grid.rs @@ -174,7 +174,7 @@ impl Grid { pub fn erase_row_backward(&mut self) { let pos = self.pos; let row = self.current_row_mut(); - for cell in row.cells_mut().take(pos.col as usize) { + for cell in row.cells_mut().take(pos.col as usize + 1) { *cell = crate::cell::Cell::default(); } } 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] |