aboutsummaryrefslogtreecommitdiffstats
path: root/tests/control.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/control.rs')
-rw-r--r--tests/control.rs90
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/control.rs b/tests/control.rs
new file mode 100644
index 0000000..837f83c
--- /dev/null
+++ b/tests/control.rs
@@ -0,0 +1,90 @@
+extern crate vt100;
+
+mod support;
+use support::TestHelpers;
+
+#[test]
+fn bel() {
+ let mut screen = vt100::Screen::new(24, 80);
+
+ assert!(!screen.check_audible_bell());
+
+ screen.assert_process(b"\x07");
+ assert!(screen.check_audible_bell());
+ assert!(!screen.check_audible_bell());
+}
+
+#[test]
+fn bs() {
+ let mut screen = vt100::Screen::new(24, 80);
+
+ screen.assert_process(b"foo\x08\x08aa");
+ assert_eq!(screen.cell(0, 0).unwrap().contents(), "f");
+ assert_eq!(screen.cell(0, 1).unwrap().contents(), "a");
+ 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.window_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");
+
+ screen.assert_process(b"\r\nquux\x08\x08\x08\x08\x08\x08bar");
+ assert_eq!(screen.cell(1, 0).unwrap().contents(), "b");
+ assert_eq!(screen.cell(1, 1).unwrap().contents(), "a");
+ assert_eq!(screen.cell(1, 2).unwrap().contents(), "r");
+ 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.window_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");
+}
+
+#[test]
+fn tab() {
+ let mut screen = vt100::Screen::new(24, 80);
+
+ screen.assert_process(b"foo\tbar");
+ 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(0, 4).unwrap().contents(), "");
+ assert_eq!(screen.cell(0, 5).unwrap().contents(), "");
+ assert_eq!(screen.cell(0, 6).unwrap().contents(), "");
+ assert_eq!(screen.cell(0, 7).unwrap().contents(), "");
+ assert_eq!(screen.cell(0, 8).unwrap().contents(), "b");
+ 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.window_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");
+}
+
+#[test]
+fn lf() {
+ let mut screen = vt100::Screen::new(24, 80);
+
+ screen.assert_process(b"foo\nbar");
+ 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.cell(1, 1).unwrap().contents(), "");
+ assert_eq!(screen.cell(1, 2).unwrap().contents(), "");
+ assert_eq!(screen.cell(1, 3).unwrap().contents(), "b");
+ 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.window_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");
+}
+
+#[test]
+fn cr() {
+ let mut screen = vt100::Screen::new(24, 80);
+
+ screen.assert_process(b"fooo\rbar");
+ assert_eq!(screen.cell(0, 0).unwrap().contents(), "b");
+ assert_eq!(screen.cell(0, 1).unwrap().contents(), "a");
+ assert_eq!(screen.cell(0, 2).unwrap().contents(), "r");
+ 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.window_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");
+}