From ea55c107307ef8bca11accc09ff2c47c74745cb1 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 4 Nov 2019 00:49:21 -0500 Subject: more useful contents/contents_formatted behavior --- tests/basic.rs | 2 +- tests/control.rs | 25 ++----- tests/csi.rs | 179 +++++++++++++++++++++-------------------------- tests/escape.rs | 47 ++++--------- tests/init.rs | 10 +-- tests/mode.rs | 52 ++++---------- tests/scroll.rs | 10 +-- tests/text.rs | 70 ++++++------------ tests/window_contents.rs | 48 ++++++------- 9 files changed, 162 insertions(+), 281 deletions(-) (limited to 'tests') diff --git a/tests/basic.rs b/tests/basic.rs index b260a23..f26e175 100644 --- a/tests/basic.rs +++ b/tests/basic.rs @@ -9,7 +9,7 @@ fn process_text() { let mut screen = vt100::Screen::new(24, 80); let input = b"foo\x1b[31m\x1b[32mb\x1b[3;7;42ma\x1b[23mr"; screen.process(input); - assert_eq!(screen.contents(0, 0, 0, 50), "foobar\n"); + assert_eq!(screen.contents(0, 0, 0, 50), "foobar"); } #[test] diff --git a/tests/control.rs b/tests/control.rs index 7e45add..b1e8ea2 100644 --- a/tests/control.rs +++ b/tests/control.rs @@ -19,10 +19,7 @@ fn bs() { assert_eq!(screen.cell(0, 2).unwrap().contents(), "a"); assert_eq!(screen.cell(0, 3).unwrap().contents(), ""); assert_eq!(screen.cell(1, 0).unwrap().contents(), ""); - assert_eq!( - screen.contents(0, 0, 23, 79), - "faa\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.contents(0, 0, 23, 79), "faa"); screen.process(b"\r\nquux\x08\x08\x08\x08\x08\x08bar"); assert_eq!(screen.cell(1, 0).unwrap().contents(), "b"); @@ -31,10 +28,7 @@ fn bs() { assert_eq!(screen.cell(1, 3).unwrap().contents(), "x"); assert_eq!(screen.cell(1, 4).unwrap().contents(), ""); assert_eq!(screen.cell(2, 0).unwrap().contents(), ""); - assert_eq!( - screen.contents(0, 0, 23, 79), - "faa\nbarx\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.contents(0, 0, 23, 79), "faa\nbarx"); } #[test] @@ -54,10 +48,7 @@ fn tab() { assert_eq!(screen.cell(0, 9).unwrap().contents(), "a"); assert_eq!(screen.cell(0, 10).unwrap().contents(), "r"); assert_eq!(screen.cell(0, 11).unwrap().contents(), ""); - assert_eq!( - screen.contents(0, 0, 23, 79), - "foo bar\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.contents(0, 0, 23, 79), "foo bar"); } fn lf_with(b: u8) { @@ -77,10 +68,7 @@ fn lf_with(b: u8) { assert_eq!(screen.cell(1, 4).unwrap().contents(), "a"); assert_eq!(screen.cell(1, 5).unwrap().contents(), "r"); assert_eq!(screen.cell(1, 6).unwrap().contents(), ""); - assert_eq!( - screen.contents(0, 0, 23, 79), - "foo\n bar\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.contents(0, 0, 23, 79), "foo\n bar"); } #[test] @@ -109,8 +97,5 @@ fn cr() { assert_eq!(screen.cell(0, 3).unwrap().contents(), "o"); assert_eq!(screen.cell(0, 4).unwrap().contents(), ""); assert_eq!(screen.cell(1, 0).unwrap().contents(), ""); - assert_eq!( - screen.contents(0, 0, 23, 79), - "baro\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.contents(0, 0, 23, 79), "baro"); } diff --git a/tests/csi.rs b/tests/csi.rs index 5177100..6878363 100644 --- a/tests/csi.rs +++ b/tests/csi.rs @@ -91,221 +91,215 @@ fn relative_movement() { #[test] fn ed() { let mut screen = vt100::Screen::new(24, 80); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); screen.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); - assert_eq!(screen.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"); + assert_eq!(screen.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"); screen.process(b"\x1b[10;12H\x1b[0J"); - assert_eq!(screen.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;6H\x1b[1J"); assert_eq!( screen.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" + "foo\n\n\n\n bar\n\n\n\n\n ba" ); - screen.process(b"\x1b[7;7H\x1b[2J"); + screen.process(b"\x1b[5;6H\x1b[1J"); assert_eq!( screen.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" + "\n\n\n\n r\n\n\n\n\n ba" ); + screen.process(b"\x1b[7;7H\x1b[2J"); + assert_eq!(screen.contents(0, 0, 23, 79), ""); + screen.process(b"\x1b[2J\x1b[H"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); screen.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); - assert_eq!(screen.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"); + assert_eq!(screen.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"); screen.process(b"\x1b[10;12H\x1b[J"); - assert_eq!(screen.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[2J\x1b[H"); assert_eq!( screen.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" + "foo\n\n\n\n bar\n\n\n\n\n ba" ); + screen.process(b"\x1b[2J\x1b[H"); + assert_eq!(screen.contents(0, 0, 23, 79), ""); + screen.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); - assert_eq!(screen.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"); + assert_eq!(screen.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"); screen.process(b"\x1b[10;12H\x1b[?0J"); - assert_eq!(screen.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;6H\x1b[?1J"); assert_eq!( screen.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" + "foo\n\n\n\n bar\n\n\n\n\n ba" ); - screen.process(b"\x1b[7;7H\x1b[?2J"); + screen.process(b"\x1b[5;6H\x1b[?1J"); assert_eq!( screen.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" + "\n\n\n\n r\n\n\n\n\n ba" ); + screen.process(b"\x1b[7;7H\x1b[?2J"); + assert_eq!(screen.contents(0, 0, 23, 79), ""); + screen.process(b"\x1b[2J\x1b[H"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); screen.process(b"foo\x1b[5;5Hbar\x1b[10;10Hbaz\x1b[20;20Hquux"); - assert_eq!(screen.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"); + assert_eq!(screen.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"); screen.process(b"\x1b[10;12H\x1b[?J"); - assert_eq!(screen.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"); + assert_eq!( + screen.contents(0, 0, 23, 79), + "foo\n\n\n\n bar\n\n\n\n\n ba" + ); } #[test] fn el() { let mut screen = vt100::Screen::new(24, 80); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); screen.process(b"foo\x1b[5;5Hbarbar\x1b[10;10Hbazbaz\x1b[20;20Hquux"); - assert_eq!(screen.contents(0, 0, 23, 79), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux"); screen.process(b"\x1b[5;8H\x1b[0K"); - assert_eq!(screen.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"); + assert_eq!(screen.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"); screen.process(b"\x1b[10;12H\x1b[1K"); - assert_eq!(screen.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"); + assert_eq!(screen.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"); screen.process(b"\x1b[20;22H\x1b[2K"); - assert_eq!(screen.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\n\n\n\n\n"); + assert_eq!( + screen.contents(0, 0, 23, 79), + "foo\n\n\n\n bar\n\n\n\n\n baz" + ); screen.process(b"\x1b[1;2H\x1b[K"); - assert_eq!(screen.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.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" + "f\n\n\n\n bar\n\n\n\n\n baz" ); + screen.process(b"\x1b[2J\x1b[H"); + assert_eq!(screen.contents(0, 0, 23, 79), ""); + screen.process(b"foo\x1b[5;5Hbarbar\x1b[10;10Hbazbaz\x1b[20;20Hquux"); - assert_eq!(screen.contents(0, 0, 23, 79), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux\n\n\n\n\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "foo\n\n\n\n barbar\n\n\n\n\n bazbaz\n\n\n\n\n\n\n\n\n\n quux"); screen.process(b"\x1b[5;8H\x1b[?0K"); - assert_eq!(screen.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"); + assert_eq!(screen.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"); screen.process(b"\x1b[10;12H\x1b[?1K"); - assert_eq!(screen.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"); + assert_eq!(screen.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"); screen.process(b"\x1b[20;22H\x1b[?2K"); - assert_eq!(screen.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\n\n\n\n\n"); + assert_eq!( + screen.contents(0, 0, 23, 79), + "foo\n\n\n\n bar\n\n\n\n\n baz" + ); screen.process(b"\x1b[1;2H\x1b[?K"); - assert_eq!(screen.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.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" + "f\n\n\n\n bar\n\n\n\n\n baz" ); + screen.process(b"\x1b[2J\x1b[H"); + assert_eq!(screen.contents(0, 0, 23, 79), ""); + screen.process(b"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"); assert_eq!( screen.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" + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ); screen.process(b"\x1b[1;21H\x1b[K"); assert_eq!( screen.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" + "12345678901234567890\n12345678901234567890" ); screen.process(b"\x1b[1;10H\x1b[1K"); assert_eq!( screen.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" + " 1234567890\n12345678901234567890" ); } #[test] fn ich_dch_ech() { let mut screen = vt100::Screen::new(24, 80); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); screen.process(b"\x1b[10;10Hfoobar"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n 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 foobar" ); screen.process(b"\x1b[10;12H\x1b[3@"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n fo obar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\n\n\n\n\n\n\n\n\n fo obar" ); assert_eq!(screen.cursor_position(), (9, 11)); screen.process(b"\x1b[4P"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n fobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\n\n\n\n\n\n\n\n\n fobar" ); assert_eq!(screen.cursor_position(), (9, 11)); screen.process(b"\x1b[100@"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n fo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\n\n\n\n\n\n\n\n\n fo" ); assert_eq!(screen.cursor_position(), (9, 11)); screen.process(b"obar"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n 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 foobar" ); assert_eq!(screen.cursor_position(), (9, 15)); screen.process(b"\x1b[10;12H\x1b[100P"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n fo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\n\n\n\n\n\n\n\n\n fo" ); assert_eq!(screen.cursor_position(), (9, 11)); screen.process(b"obar"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n 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 foobar" ); assert_eq!(screen.cursor_position(), (9, 15)); screen.process(b"\x1b[10;13H\x1b[X"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n foo ar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\n\n\n\n\n\n\n\n\n foo ar" ); assert_eq!(screen.cursor_position(), (9, 12)); screen.process(b"\x1b[10;11H\x1b[4X"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n f r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\n\n\n\n\n\n\n\n\n f r" ); assert_eq!(screen.cursor_position(), (9, 10)); screen.process(b"\x1b[10;11H\x1b[400X"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n f\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\n\n\n\n\n\n\n\n\n f" ); assert_eq!(screen.cursor_position(), (9, 10)); } @@ -313,95 +307,80 @@ fn ich_dch_ech() { #[test] fn il_dl() { let mut screen = vt100::Screen::new(24, 80); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); screen.process(b"\x1b[10;10Hfoobar\x1b[3D"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n 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 foobar" ); assert_eq!(screen.cursor_position(), (9, 12)); screen.process(b"\x1b[L"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n\n 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 foobar" ); assert_eq!(screen.cursor_position(), (9, 12)); screen.process(b"\x1b[3L"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n\n\n\n\n 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 foobar" ); assert_eq!(screen.cursor_position(), (9, 12)); screen.process(b"\x1b[500L"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); assert_eq!(screen.cursor_position(), (9, 12)); screen.process(b"\x1b[10;10Hfoobar\x1b[3D\x1b[6A"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n\n 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 foobar" ); assert_eq!(screen.cursor_position(), (3, 12)); screen.process(b"\x1b[M"); assert_eq!( screen.contents(0, 0, 23, 79), - "\n\n\n\n\n\n\n\n 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 foobar" ); assert_eq!(screen.cursor_position(), (3, 12)); screen.process(b"\x1b[3M"); - assert_eq!( - screen.contents(0, 0, 23, 79), - "\n\n\n\n\n foobar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - ); + assert_eq!(screen.contents(0, 0, 23, 79), "\n\n\n\n\n foobar"); assert_eq!(screen.cursor_position(), (3, 12)); screen.process(b"\x1b[500M"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); assert_eq!(screen.cursor_position(), (3, 12)); } #[test] fn scroll() { let mut screen = vt100::Screen::new(24, 80); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); screen.process(b"1\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.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.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"); screen.process(b"\x1b[15;15H"); assert_eq!(screen.cursor_position(), (14, 14)); screen.process(b"\x1b[S"); - assert_eq!(screen.contents(0, 0, 23, 79), "2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24"); assert_eq!(screen.cursor_position(), (14, 14)); screen.process(b"\x1b[3S"); - assert_eq!(screen.contents(0, 0, 23, 79), "5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n\n\n\n\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24"); assert_eq!(screen.cursor_position(), (14, 14)); screen.process(b"\x1b[T"); - assert_eq!(screen.contents(0, 0, 23, 79), "\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n\n\n\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24"); assert_eq!(screen.cursor_position(), (14, 14)); screen.process(b"\x1b[5T"); - assert_eq!(screen.contents(0, 0, 23, 79), "\n\n\n\n\n\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "\n\n\n\n\n\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22"); assert_eq!(screen.cursor_position(), (14, 14)); } diff --git a/tests/escape.rs b/tests/escape.rs index 6c70aee..2385704 100644 --- a/tests/escape.rs +++ b/tests/escape.rs @@ -14,10 +14,7 @@ fn deckpam() { fn ri() { let mut screen = vt100::Screen::new(24, 80); screen.process(b"foo\nbar\x1bMbaz"); - assert_eq!( - screen.contents(0, 0, 23, 79), - "foo baz\n bar\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.contents(0, 0, 23, 79), "foo baz\n bar"); } #[test] @@ -28,14 +25,8 @@ fn ris() { let cell = screen.cell(0, 0).unwrap(); assert_eq!(cell.contents(), ""); - assert_eq!( - screen.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.contents_formatted(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.contents(0, 0, 23, 79), ""); + assert_eq!(screen.contents_formatted(0, 0, 23, 79), ""); assert_eq!(screen.title(), ""); assert_eq!(screen.icon_name(), ""); @@ -67,11 +58,11 @@ fn ris() { let cell = screen.cell(0, 0).unwrap(); assert_eq!(cell.contents(), "f"); + assert_eq!(screen.contents(0, 0, 23, 79), "foo"); assert_eq!( - screen.contents(0, 0, 23, 79), - "foo\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.contents_formatted(0, 0, 23, 79), + "f\x1b[31;47;1;3;4moo" ); - assert_eq!(screen.contents_formatted(0, 0, 23, 79), "f\x1b[31;47;1;3;4moo\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.title(), "window title"); assert_eq!(screen.icon_name(), "window icon name"); @@ -105,14 +96,8 @@ fn ris() { let cell = screen.cell(0, 0).unwrap(); assert_eq!(cell.contents(), ""); - assert_eq!( - screen.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.contents_formatted(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.contents(0, 0, 23, 79), ""); + assert_eq!(screen.contents_formatted(0, 0, 23, 79), ""); // title and icon name don't change with reset assert_eq!(screen.title(), "window title"); @@ -154,17 +139,11 @@ fn vb() { fn decsc() { let mut screen = vt100::Screen::new(24, 80); screen.process(b"foo\x1b7\r\n\r\n\r\n bar\x1b8baz"); - assert_eq!( - screen.contents(0, 0, 23, 79), - "foobaz\n\n\n bar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - ); + assert_eq!(screen.contents(0, 0, 23, 79), "foobaz\n\n\n bar"); assert_eq!(screen.cursor_position(), (0, 6)); screen.process(b"\x1b[?47h\x1b[20;20H"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); assert_eq!(screen.cursor_position(), (19, 19)); screen.process(b"\x1b8"); @@ -180,20 +159,20 @@ fn decsc() { assert_eq!(screen.cursor_position(), (4, 3)); assert_eq!( screen.contents_formatted(0, 0, 23, 79), - "\n\n\n\n\x1b[31mfoo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\r\n\r\n\r\n\r\n\x1b[31mfoo" ); screen.process(b"\x1b[32m\x1b[?6lbar"); assert_eq!(screen.cursor_position(), (0, 3)); assert_eq!( screen.contents_formatted(0, 0, 23, 79), - "\x1b[32mbar\n\n\n\n\x1b[31mfoo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\x1b[32mbar\r\n\r\n\r\n\r\n\x1b[31mfoo" ); screen.process(b"\x1b8\x1b[Hz"); assert_eq!(screen.cursor_position(), (4, 1)); assert_eq!( screen.contents_formatted(0, 0, 23, 79), - "\x1b[32mbar\n\n\n\n\x1b[31mzoo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + "\x1b[32mbar\r\n\r\n\r\n\r\n\x1b[31mzoo" ); } diff --git a/tests/init.rs b/tests/init.rs index 4893f4a..7617fe7 100644 --- a/tests/init.rs +++ b/tests/init.rs @@ -15,14 +15,8 @@ fn init() { let cell = screen.cell(0, 80); assert!(cell.is_none()); - assert_eq!( - screen.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.contents_formatted(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.contents(0, 0, 23, 79), ""); + assert_eq!(screen.contents_formatted(0, 0, 23, 79), ""); assert_eq!(screen.title(), ""); assert_eq!(screen.icon_name(), ""); diff --git a/tests/mode.rs b/tests/mode.rs index be6ad6d..0cca4b7 100644 --- a/tests/mode.rs +++ b/tests/mode.rs @@ -303,98 +303,74 @@ fn alternate_buffer() { // 47 screen.process(b"\x1bc"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); assert_eq!(screen.cursor_position(), (0, 0)); assert!(!screen.alternate_screen()); 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.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.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"); assert_eq!(screen.cursor_position(), (23, 2)); assert!(!screen.alternate_screen()); screen.process(b"\x1b[?47h"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); assert_eq!(screen.cursor_position(), (0, 0)); assert!(screen.alternate_screen()); screen.process(b"foobar"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), "foobar"); assert_eq!(screen.cursor_position(), (0, 6)); assert!(screen.alternate_screen()); screen.process(b"\x1b[?47l"); - assert_eq!(screen.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.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"); assert_eq!(screen.cursor_position(), (23, 2)); assert!(!screen.alternate_screen()); screen.process(b"\x1b[?47h"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), "foobar"); assert_eq!(screen.cursor_position(), (0, 6)); assert!(screen.alternate_screen()); screen.process(b"\x1b[?47l"); - assert_eq!(screen.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.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"); assert_eq!(screen.cursor_position(), (23, 2)); assert!(!screen.alternate_screen()); // 1049 screen.process(b"\x1bc"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); assert_eq!(screen.cursor_position(), (0, 0)); assert!(!screen.alternate_screen()); 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.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.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"); assert_eq!(screen.cursor_position(), (23, 2)); assert!(!screen.alternate_screen()); screen.process(b"\x1b[?1049h"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); assert_eq!(screen.cursor_position(), (0, 0)); assert!(screen.alternate_screen()); screen.process(b"foobar"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), "foobar"); assert_eq!(screen.cursor_position(), (0, 6)); assert!(screen.alternate_screen()); screen.process(b"\x1b[?1049l"); - assert_eq!(screen.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.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"); assert_eq!(screen.cursor_position(), (23, 2)); assert!(!screen.alternate_screen()); screen.process(b"\x1b[?1049h"); - assert_eq!( - screen.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.contents(0, 0, 23, 79), ""); assert_eq!(screen.cursor_position(), (0, 0)); assert!(screen.alternate_screen()); screen.process(b"\x1b[?1049l"); - assert_eq!(screen.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.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"); assert_eq!(screen.cursor_position(), (23, 2)); assert!(!screen.alternate_screen()); } diff --git a/tests/scroll.rs b/tests/scroll.rs index e7f0e7f..b75a54d 100644 --- a/tests/scroll.rs +++ b/tests/scroll.rs @@ -2,10 +2,10 @@ fn scroll_regions() { let mut screen = vt100::Screen::new(24, 80); 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.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.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"); screen.process(b"\x1b[24;50H\n"); - assert_eq!(screen.contents(0, 0, 23, 79), "2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24"); 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"); @@ -16,7 +16,7 @@ fn scroll_regions() { assert_eq!(screen.cursor_position(), (19, 49)); screen.process(b"\n"); - assert_eq!(screen.contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n\n21\n22\n23\n24\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n\n21\n22\n23\n24"); assert_eq!(screen.cursor_position(), (19, 49)); screen.process(b"\x1b[B"); @@ -26,9 +26,9 @@ fn scroll_regions() { assert_eq!(screen.cursor_position(), (9, 49)); screen.process(b"\x1b[1;24r\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"); screen.process(b"\x1b[10;20r\x1b[15;50H\x1b[2L"); - assert_eq!(screen.contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n\n\n15\n16\n17\n18\n21\n22\n23\n24\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n\n\n15\n16\n17\n18\n21\n22\n23\n24"); screen.process(b"\x1b[10;50H\x1bM"); - assert_eq!(screen.contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n\n10\n11\n12\n13\n14\n\n\n15\n16\n17\n21\n22\n23\n24\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "1\n2\n3\n4\n5\n6\n7\n8\n9\n\n10\n11\n12\n13\n14\n\n\n15\n16\n17\n21\n22\n23\n24"); } #[test] diff --git a/tests/text.rs b/tests/text.rs index af71fd7..f741100 100644 --- a/tests/text.rs +++ b/tests/text.rs @@ -9,14 +9,8 @@ fn ascii() { assert_eq!(screen.cell(0, 2).unwrap().contents(), "o"); assert_eq!(screen.cell(0, 3).unwrap().contents(), ""); assert_eq!(screen.cell(1, 0).unwrap().contents(), ""); - assert_eq!( - screen.contents(0, 0, 23, 79), - "foo\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.contents(0, 0, 500, 500), - "foo\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.contents(0, 0, 23, 79), "foo"); + assert_eq!(screen.contents(0, 0, 500, 500), "foo"); } #[test] @@ -29,14 +23,8 @@ fn utf8() { assert_eq!(screen.cell(0, 3).unwrap().contents(), "é"); assert_eq!(screen.cell(0, 4).unwrap().contents(), ""); assert_eq!(screen.cell(1, 0).unwrap().contents(), ""); - assert_eq!( - screen.contents(0, 0, 23, 79), - "café\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.contents(0, 0, 500, 500), - "café\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.contents(0, 0, 23, 79), "café"); + assert_eq!(screen.contents(0, 0, 500, 500), "café"); } #[test] @@ -54,14 +42,8 @@ fn newlines() { assert_eq!(screen.cell(2, 2).unwrap().contents(), "d"); assert_eq!(screen.cell(0, 3).unwrap().contents(), ""); assert_eq!(screen.cell(3, 0).unwrap().contents(), ""); - assert_eq!( - screen.contents(0, 0, 23, 79), - "f\noo\nood\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.contents(0, 0, 500, 500), - "f\noo\nood\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.contents(0, 0, 23, 79), "f\noo\nood"); + assert_eq!(screen.contents(0, 0, 500, 500), "f\noo\nood"); } #[test] @@ -76,14 +58,8 @@ fn wide() { assert_eq!(screen.cell(0, 5).unwrap().contents(), ""); assert_eq!(screen.cell(0, 6).unwrap().contents(), ""); assert_eq!(screen.cell(1, 0).unwrap().contents(), ""); - assert_eq!( - screen.contents(0, 0, 23, 79), - "aデbネ\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.contents(0, 0, 500, 500), - "aデbネ\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.contents(0, 0, 23, 79), "aデbネ"); + assert_eq!(screen.contents(0, 0, 500, 500), "aデbネ"); } #[test] @@ -94,9 +70,9 @@ fn combining() { screen.process("\u{0301}".as_bytes()); assert_eq!(screen.cell(0, 0).unwrap().contents(), "á"); screen.process(b"\x1b[20;20Habcdefg"); - assert_eq!(screen.contents(19, 19, 19, 26), "abcdefg\n"); + assert_eq!(screen.contents(19, 19, 19, 26), "abcdefg"); screen.process("\x1b[20;25H\u{0301}".as_bytes()); - assert_eq!(screen.contents(19, 19, 19, 26), "abcdéfg\n"); + assert_eq!(screen.contents(19, 19, 19, 26), "abcdéfg"); screen.process(b"\x1b[10;78Haaa"); assert_eq!(screen.cell(9, 79).unwrap().contents(), "a"); screen.process("\r\n\u{0301}".as_bytes()); @@ -108,34 +84,34 @@ fn combining() { fn wrap() { let mut screen = vt100::Screen::new(24, 80); screen.process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"); - assert_eq!(screen.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\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.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"); screen.process(b"\x1b[5H01234567890123456789012345678901234567890123456789012345678901234567890123456789"); screen.process(b"\x1b[6H01234567890123456789012345678901234567890123456789012345678901234567890123456789"); - assert_eq!(screen.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n\n\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); + assert_eq!(screen.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n\n\n01234567890123456789012345678901234567890123456789012345678901234567890123456789\n01234567890123456789012345678901234567890123456789012345678901234567890123456789"); screen.process(b"\x1b[H\x1b[J"); screen.process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678"); - assert_eq!(screen.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678\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.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678"); assert_eq!(screen.cursor_position(), (0, 79)); screen.process(b"9"); - assert_eq!(screen.contents(0, 0, 23, 79), "01234567890123456789012345678901234567890123456789012345678901234567890123456789\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.contents(0, 0, 23, 79), "01234567890123456789012345678901234567890123456789012345678901234567890123456789"); assert_eq!(screen.cursor_position(), (0, 80)); screen.process(b"a"); - assert_eq!(screen.contents(0, 0, 23, 79), "01234567890123456789012345678901234567890123456789012345678901234567890123456789a\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.contents(0, 0, 23, 79), "01234567890123456789012345678901234567890123456789012345678901234567890123456789a"); assert_eq!(screen.cursor_position(), (1, 1)); screen.process(b"b"); - assert_eq!(screen.contents(0, 0, 23, 79), "01234567890123456789012345678901234567890123456789012345678901234567890123456789ab\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.contents(0, 0, 23, 79), "01234567890123456789012345678901234567890123456789012345678901234567890123456789ab"); assert_eq!(screen.cursor_position(), (1, 2)); screen.process(b"\x1b[H\x1b[J"); screen.process(b"012345678901234567890123456789012345678901234567890123456789012345678901234567"); - assert_eq!(screen.contents(0, 0, 23, 79), "012345678901234567890123456789012345678901234567890123456789012345678901234567\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.contents(0, 0, 23, 79), "012345678901234567890123456789012345678901234567890123456789012345678901234567"); assert_eq!(screen.cursor_position(), (0, 78)); screen.process("ネ".as_bytes()); - assert_eq!(screen.contents(0, 0, 23, 79), "012345678901234567890123456789012345678901234567890123456789012345678901234567ネ\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.contents(0, 0, 23, 79), "012345678901234567890123456789012345678901234567890123456789012345678901234567ネ"); assert_eq!(screen.cursor_position(), (0, 80)); screen.process(b"a"); - assert_eq!(screen.contents(0, 0, 23, 79), "012345678901234567890123456789012345678901234567890123456789012345678901234567ネa\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.contents(0, 0, 23, 79), "012345678901234567890123456789012345678901234567890123456789012345678901234567ネa"); assert_eq!(screen.cursor_position(), (1, 1)); assert_eq!(screen.cell(0, 77).unwrap().contents(), "7"); assert_eq!(screen.cell(0, 78).unwrap().contents(), "ネ"); @@ -145,13 +121,13 @@ fn wrap() { screen.process(b"\x1b[H\x1b[J"); screen.process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678"); - assert_eq!(screen.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678\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.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678"); assert_eq!(screen.cursor_position(), (0, 79)); screen.process("ネ".as_bytes()); - assert_eq!(screen.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678ネ\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.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678ネ"); assert_eq!(screen.cursor_position(), (1, 2)); screen.process(b"a"); - assert_eq!(screen.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678ネa\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.contents(0, 0, 23, 79), "0123456789012345678901234567890123456789012345678901234567890123456789012345678ネa"); assert_eq!(screen.cursor_position(), (1, 3)); assert_eq!(screen.cell(0, 77).unwrap().contents(), "7"); assert_eq!(screen.cell(0, 78).unwrap().contents(), "8"); @@ -166,7 +142,7 @@ fn wrap() { fn soft_hyphen() { let mut screen = vt100::Screen::new(24, 140); screen.process(b"Free En\xc2\xadter\xc2\xadprise is gonna ru\xc2\xadin ev\xc2\xadery\xc2\xadthing good un\xc2\xadless we take a knife to its tes\xc2\xadti\xc2\xadcles first."); - assert_eq!(screen.contents(0, 0, 0, 139), "Free En\u{00ad}ter\u{00ad}prise is gonna ru\u{00ad}in ev\u{00ad}ery\u{00ad}thing good un\u{00ad}less we take a knife to its tes\u{00ad}ti\u{00ad}cles first.\n"); + assert_eq!(screen.contents(0, 0, 0, 139), "Free En\u{00ad}ter\u{00ad}prise is gonna ru\u{00ad}in ev\u{00ad}ery\u{00ad}thing good un\u{00ad}less we take a knife to its tes\u{00ad}ti\u{00ad}cles first."); assert_eq!(screen.cell(0, 0).unwrap().contents(), "F"); assert_eq!(screen.cell(0, 1).unwrap().contents(), "r"); assert_eq!(screen.cell(0, 2).unwrap().contents(), "e"); diff --git a/tests/window_contents.rs b/tests/window_contents.rs index 6391763..9d7553e 100644 --- a/tests/window_contents.rs +++ b/tests/window_contents.rs @@ -2,10 +2,7 @@ fn formatted() { let mut screen = vt100::Screen::new(24, 80); compare_formatted(&screen); - assert_eq!( - screen.contents_formatted(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.contents_formatted(0, 0, 23, 79), ""); screen.process(b"foobar"); compare_formatted(&screen); @@ -13,10 +10,7 @@ fn formatted() { assert!(!screen.cell(0, 3).unwrap().bold()); assert!(!screen.cell(0, 4).unwrap().bold()); assert!(!screen.cell(0, 5).unwrap().bold()); - assert_eq!( - screen.contents_formatted(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.contents_formatted(0, 0, 23, 79), "foobar"); screen.process(b"\x1b[1;4H\x1b[1;7m\x1b[33mb"); compare_formatted(&screen); @@ -24,7 +18,10 @@ fn formatted() { assert!(screen.cell(0, 3).unwrap().bold()); assert!(!screen.cell(0, 4).unwrap().bold()); assert!(!screen.cell(0, 5).unwrap().bold()); - assert_eq!(screen.contents_formatted(0, 0 ,23, 79), "foo\x1b[33;1;7mb\x1b[mar\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.contents_formatted(0, 0, 23, 79), + "foo\x1b[33;1;7mb\x1b[mar" + ); screen.process(b"\x1b[1;5H\x1b[22;42ma"); compare_formatted(&screen); @@ -32,41 +29,36 @@ fn formatted() { assert!(screen.cell(0, 3).unwrap().bold()); assert!(!screen.cell(0, 4).unwrap().bold()); assert!(!screen.cell(0, 5).unwrap().bold()); - assert_eq!(screen.contents_formatted(0, 0 ,23, 79), "foo\x1b[33;1;7mb\x1b[42;22ma\x1b[mr\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.contents_formatted(0, 0, 23, 79), + "foo\x1b[33;1;7mb\x1b[42;22ma\x1b[mr" + ); screen.process(b"\x1b[1;6H\x1b[35mr\r\nquux"); compare_formatted(&screen); - assert_eq!(screen.contents_formatted(0, 0 ,23, 79), "foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\nquux\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.contents_formatted(0, 0, 23, 79), + "foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\r\nquux" + ); screen.process(b"\x1b[2;1H\x1b[45mquux"); compare_formatted(&screen); - assert_eq!(screen.contents_formatted(0, 0 ,23, 79), "foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\n\x1b[45mquux\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.contents_formatted(0, 0, 23, 79), + "foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\r\n\x1b[45mquux" + ); screen .process(b"\x1b[2;2H\x1b[38;2;123;213;231mu\x1b[38;5;254mu\x1b[39mx"); compare_formatted(&screen); - assert_eq!(screen.contents_formatted(0, 0 ,23, 79), "foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\n\x1b[45mq\x1b[38;2;123;213;231mu\x1b[38;5;254mu\x1b[39mx\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.contents_formatted(0, 0 ,23, 79), "foo\x1b[33;1;7mb\x1b[42;22ma\x1b[35mr\r\n\x1b[45mq\x1b[38;2;123;213;231mu\x1b[38;5;254mu\x1b[39mx"); } fn compare_formatted(screen: &vt100::Screen) { let (rows, cols) = screen.size(); let contents = screen.contents_formatted(0, 0, rows - 1, cols - 1); let mut screen2 = vt100::Screen::new(rows, cols); - let input = - contents - .trim_end() - .as_bytes() - .iter() - .fold(vec![], |mut acc, &c| { - if c == b'\n' { - acc.push(b'\r'); - acc.push(b'\n'); - } else { - acc.push(c); - } - acc - }); - screen2.process(&input); + screen2.process(contents.as_bytes()); compare_cells(screen, &screen2); } -- cgit v1.2.3-54-g00ecf