From 33aac534a00cd05499820bb1892c1c9226eb2acc Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 28 Apr 2016 03:24:44 -0400 Subject: add a bunch of tests --- tests/text.rs | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 tests/text.rs (limited to 'tests/text.rs') diff --git a/tests/text.rs b/tests/text.rs new file mode 100644 index 0000000..73a0398 --- /dev/null +++ b/tests/text.rs @@ -0,0 +1,94 @@ +extern crate vt100; + +mod support; +use support::TestHelpers; + +#[test] +fn ascii() { + let mut screen = vt100::Screen::new(24, 80); + screen.assert_process(b"foo"); + assert_eq!(screen.cell(0, 0).unwrap().contents(), "f"); + assert_eq!(screen.cell(0, 1).unwrap().contents(), "o"); + 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.window_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.window_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"); +} + +#[test] +fn utf8() { + let mut screen = vt100::Screen::new(24, 80); + screen.assert_process("café".as_bytes()); + assert_eq!(screen.cell(0, 0).unwrap().contents(), "c"); + assert_eq!(screen.cell(0, 1).unwrap().contents(), "a"); + assert_eq!(screen.cell(0, 2).unwrap().contents(), "f"); + 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.window_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.window_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"); +} + +#[test] +fn newlines() { + let mut screen = vt100::Screen::new(24, 80); + screen.assert_process(b"f\r\noo\r\nood"); + assert_eq!(screen.cell(0, 0).unwrap().contents(), "f"); + assert_eq!(screen.cell(0, 1).unwrap().contents(), ""); + assert_eq!(screen.cell(0, 2).unwrap().contents(), ""); + assert_eq!(screen.cell(1, 0).unwrap().contents(), "o"); + assert_eq!(screen.cell(1, 1).unwrap().contents(), "o"); + assert_eq!(screen.cell(1, 2).unwrap().contents(), ""); + assert_eq!(screen.cell(2, 0).unwrap().contents(), "o"); + assert_eq!(screen.cell(2, 1).unwrap().contents(), "o"); + 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.window_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.window_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"); +} + +#[test] +fn wide() { + let mut screen = vt100::Screen::new(24, 80); + screen.assert_process("aデbネ".as_bytes()); + assert_eq!(screen.cell(0, 0).unwrap().contents(), "a"); + assert_eq!(screen.cell(0, 1).unwrap().contents(), "デ"); + assert_eq!(screen.cell(0, 2).unwrap().contents(), ""); + assert_eq!(screen.cell(0, 3).unwrap().contents(), "b"); + assert_eq!(screen.cell(0, 4).unwrap().contents(), "ネ"); + 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.window_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.window_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"); +} + +#[test] +fn combining() { + let mut screen = vt100::Screen::new(24, 80); + screen.assert_process(b"a"); + assert_eq!(screen.cell(0, 0).unwrap().contents(), "a"); + screen.assert_process("\u{0301}".as_bytes()); + assert_eq!(screen.cell(0, 0).unwrap().contents(), "á"); + screen.assert_process(b"\x1b[20;20Habcdefg"); + assert_eq!(screen.window_contents(19, 19, 19, 26), "abcdefg"); + screen.assert_process("\x1b[20;25H\u{0301}".as_bytes()); + assert_eq!(screen.window_contents(19, 19, 19, 26), "abcdéfg"); + screen.assert_process(b"\x1b[10;78Haaa"); + assert_eq!(screen.cell(9, 79).unwrap().contents(), "a"); + screen.assert_process("\r\n\u{0301}".as_bytes()); + assert_eq!(screen.cell(9, 79).unwrap().contents(), "a"); + assert_eq!(screen.cell(10, 0).unwrap().contents(), ""); +} + +#[test] +fn wrap() { + let mut screen = vt100::Screen::new(24, 80); + screen.assert_process(b"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"); + assert_eq!(screen.window_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"); + screen.assert_process(b"\x1b[5H01234567890123456789012345678901234567890123456789012345678901234567890123456789"); + screen.assert_process(b"\x1b[6H01234567890123456789012345678901234567890123456789012345678901234567890123456789"); + assert_eq!(screen.window_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"); +} -- cgit v1.2.3-54-g00ecf