aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2016-04-28 00:53:26 -0400
committerJesse Luehrs <doy@tozt.net>2016-04-28 00:53:26 -0400
commitcd5d367f5613c0084da6febd7a1eb97765e1dcda (patch)
treeeecba232b14a0dca62c9c642bdede537642808b3
parente1b809a33883de11b8201eb46689794539028655 (diff)
downloadvt100-rust-cd5d367f5613c0084da6febd7a1eb97765e1dcda.tar.gz
vt100-rust-cd5d367f5613c0084da6febd7a1eb97765e1dcda.zip
attribute tests
-rw-r--r--tests/attr.rs171
-rw-r--r--tests/support/mod.rs13
2 files changed, 184 insertions, 0 deletions
diff --git a/tests/attr.rs b/tests/attr.rs
new file mode 100644
index 0000000..33582c5
--- /dev/null
+++ b/tests/attr.rs
@@ -0,0 +1,171 @@
+extern crate vt100;
+
+mod support;
+use support::TestHelpers;
+
+#[test]
+fn colors() {
+ let mut screen = vt100::Screen::new(24, 80);
+ assert_eq!(screen.fgcolor(), vt100::Color::ColorDefault);
+ assert_eq!(screen.bgcolor(), vt100::Color::ColorDefault);
+
+ screen.assert_process(b"foo\x1b[31mbar");
+
+ assert_eq!(screen.cell(0, 0).unwrap().contents(), "f");
+ assert_eq!(screen.cell(0, 0).unwrap().fgcolor(), vt100::Color::ColorDefault);
+ assert_eq!(screen.cell(0, 0).unwrap().bgcolor(), vt100::Color::ColorDefault);
+
+ assert_eq!(screen.cell(0, 3).unwrap().contents(), "b");
+ assert_eq!(screen.cell(0, 3).unwrap().fgcolor(), vt100::Color::ColorIdx(1));
+ assert_eq!(screen.cell(0, 3).unwrap().bgcolor(), vt100::Color::ColorDefault);
+
+ assert_eq!(screen.fgcolor(), vt100::Color::ColorIdx(1));
+ assert_eq!(screen.bgcolor(), vt100::Color::ColorDefault);
+
+ screen.assert_process(b"\x1b[2D\x1b[45mab");
+
+ assert_eq!(screen.cell(0, 4).unwrap().contents(), "a");
+ assert_eq!(screen.cell(0, 4).unwrap().fgcolor(), vt100::Color::ColorIdx(1));
+ assert_eq!(screen.cell(0, 4).unwrap().bgcolor(), vt100::Color::ColorIdx(5));
+
+ assert_eq!(screen.fgcolor(), vt100::Color::ColorIdx(1));
+ assert_eq!(screen.bgcolor(), vt100::Color::ColorIdx(5));
+
+ screen.assert_process(b"\x1b[m");
+
+ assert_eq!(screen.fgcolor(), vt100::Color::ColorDefault);
+ assert_eq!(screen.bgcolor(), vt100::Color::ColorDefault);
+
+ screen.assert_process(b"\x1b[15;15Hfoo\x1b[31mbar\x1b[m");
+
+ assert_eq!(screen.cell(14, 14).unwrap().contents(), "f");
+ assert_eq!(screen.cell(14, 14).unwrap().fgcolor(), vt100::Color::ColorDefault);
+ assert_eq!(screen.cell(14, 14).unwrap().bgcolor(), vt100::Color::ColorDefault);
+
+ assert_eq!(screen.cell(14, 17).unwrap().contents(), "b");
+ assert_eq!(screen.cell(14, 17).unwrap().fgcolor(), vt100::Color::ColorIdx(1));
+ assert_eq!(screen.cell(14, 17).unwrap().bgcolor(), vt100::Color::ColorDefault);
+
+ assert_eq!(screen.fgcolor(), vt100::Color::ColorDefault);
+ assert_eq!(screen.bgcolor(), vt100::Color::ColorDefault);
+
+ screen.assert_process(b"\x1b[2D\x1b[45mab");
+
+ assert_eq!(screen.cell(14, 18).unwrap().contents(), "a");
+ assert_eq!(screen.cell(14, 18).unwrap().fgcolor(), vt100::Color::ColorDefault);
+ assert_eq!(screen.cell(14, 18).unwrap().bgcolor(), vt100::Color::ColorIdx(5));
+
+ assert_eq!(screen.fgcolor(), vt100::Color::ColorDefault);
+ assert_eq!(screen.bgcolor(), vt100::Color::ColorIdx(5));
+
+ screen.assert_process(b"\x1b[m\x1b[2J\x1b[H");
+ screen.assert_process(b"a\x1b[38;5;123mb\x1b[48;5;158mc");
+
+ assert_eq!(screen.fgcolor(), vt100::Color::ColorIdx(123));
+ assert_eq!(screen.bgcolor(), vt100::Color::ColorIdx(158));
+
+ assert_eq!(screen.cell(0, 0).unwrap().fgcolor(), vt100::Color::ColorDefault);
+ assert_eq!(screen.cell(0, 0).unwrap().bgcolor(), vt100::Color::ColorDefault);
+
+ assert_eq!(screen.cell(0, 1).unwrap().fgcolor(), vt100::Color::ColorIdx(123));
+ assert_eq!(screen.cell(0, 1).unwrap().bgcolor(), vt100::Color::ColorDefault);
+
+ assert_eq!(screen.cell(0, 2).unwrap().fgcolor(), vt100::Color::ColorIdx(123));
+ assert_eq!(screen.cell(0, 2).unwrap().bgcolor(), vt100::Color::ColorIdx(158));
+
+ screen.assert_process(b"\x1b[38;2;50;75;100md\x1b[48;2;125;150;175me");
+
+ assert_eq!(screen.fgcolor(), vt100::Color::ColorRgb(50, 75, 100));
+ assert_eq!(screen.bgcolor(), vt100::Color::ColorRgb(125, 150, 175));
+
+ assert_eq!(screen.cell(0, 3).unwrap().fgcolor(), vt100::Color::ColorRgb(50, 75, 100));
+ assert_eq!(screen.cell(0, 3).unwrap().bgcolor(), vt100::Color::ColorIdx(158));
+
+ assert_eq!(screen.cell(0, 4).unwrap().fgcolor(), vt100::Color::ColorRgb(50, 75, 100));
+ assert_eq!(screen.cell(0, 4).unwrap().bgcolor(), vt100::Color::ColorRgb(125, 150, 175));
+
+ screen.assert_process(b"\x1b[m\x1b[2J\x1b[H");
+ screen.assert_process(b"\x1b[32;47mfoo");
+
+ assert_eq!(screen.fgcolor(), vt100::Color::ColorIdx(2));
+ assert_eq!(screen.bgcolor(), vt100::Color::ColorIdx(7));
+
+ assert_eq!(screen.cell(0, 1).unwrap().fgcolor(), vt100::Color::ColorIdx(2));
+ assert_eq!(screen.cell(0, 1).unwrap().bgcolor(), vt100::Color::ColorIdx(7));
+}
+
+#[test]
+fn attrs() {
+ let mut screen = vt100::Screen::new(24, 80);
+ assert!(!screen.bold());
+ assert!(!screen.italic());
+ assert!(!screen.underline());
+ assert!(!screen.inverse());
+
+ screen.assert_process(b"f\x1b[1mo\x1b[3mo\x1b[4mo\x1b[7mo");
+ assert!( screen.bold());
+ assert!( screen.italic());
+ assert!( screen.underline());
+ assert!( screen.inverse());
+ assert!(!screen.cell(0, 0).unwrap().bold());
+ assert!(!screen.cell(0, 0).unwrap().italic());
+ assert!(!screen.cell(0, 0).unwrap().underline());
+ assert!(!screen.cell(0, 0).unwrap().inverse());
+ assert!( screen.cell(0, 1).unwrap().bold());
+ assert!(!screen.cell(0, 1).unwrap().italic());
+ assert!(!screen.cell(0, 1).unwrap().underline());
+ assert!(!screen.cell(0, 1).unwrap().inverse());
+ assert!( screen.cell(0, 2).unwrap().bold());
+ assert!( screen.cell(0, 2).unwrap().italic());
+ assert!(!screen.cell(0, 2).unwrap().underline());
+ assert!(!screen.cell(0, 2).unwrap().inverse());
+ assert!( screen.cell(0, 3).unwrap().bold());
+ assert!( screen.cell(0, 3).unwrap().italic());
+ assert!( screen.cell(0, 3).unwrap().underline());
+ assert!(!screen.cell(0, 3).unwrap().inverse());
+ assert!( screen.cell(0, 4).unwrap().bold());
+ assert!( screen.cell(0, 4).unwrap().italic());
+ assert!( screen.cell(0, 4).unwrap().underline());
+ assert!( screen.cell(0, 4).unwrap().inverse());
+
+ screen.assert_process(b"\x1b[m");
+ assert!(!screen.bold());
+ assert!(!screen.italic());
+ assert!(!screen.underline());
+ assert!(!screen.inverse());
+
+ screen.assert_process(b"\x1b[2J\x1b[H");
+ screen.assert_process(b"\x1b[1;4mf");
+ assert!( screen.bold());
+ assert!(!screen.italic());
+ assert!( screen.underline());
+ assert!(!screen.inverse());
+ assert!( screen.cell(0, 0).unwrap().bold());
+ assert!(!screen.cell(0, 0).unwrap().italic());
+ assert!( screen.cell(0, 0).unwrap().underline());
+ assert!(!screen.cell(0, 0).unwrap().inverse());
+
+ screen.assert_process(b"\x1b[22mo\x1b[24mo");
+ assert!(!screen.bold());
+ assert!(!screen.italic());
+ assert!(!screen.underline());
+ assert!(!screen.inverse());
+ assert!(!screen.cell(0, 1).unwrap().bold());
+ assert!(!screen.cell(0, 1).unwrap().italic());
+ assert!( screen.cell(0, 1).unwrap().underline());
+ assert!(!screen.cell(0, 1).unwrap().inverse());
+ assert!(!screen.cell(0, 2).unwrap().bold());
+ assert!(!screen.cell(0, 2).unwrap().italic());
+ assert!(!screen.cell(0, 2).unwrap().underline());
+ assert!(!screen.cell(0, 2).unwrap().inverse());
+
+ screen.assert_process(b"\x1b[1;3;4;7mo");
+ assert!( screen.bold());
+ assert!( screen.italic());
+ assert!( screen.underline());
+ assert!( screen.inverse());
+ assert!( screen.cell(0, 3).unwrap().bold());
+ assert!( screen.cell(0, 3).unwrap().italic());
+ assert!( screen.cell(0, 3).unwrap().underline());
+ assert!( screen.cell(0, 3).unwrap().inverse());
+}
diff --git a/tests/support/mod.rs b/tests/support/mod.rs
new file mode 100644
index 0000000..51ad600
--- /dev/null
+++ b/tests/support/mod.rs
@@ -0,0 +1,13 @@
+use vt100;
+
+pub trait TestHelpers {
+ fn assert_process(&mut self, s: &[u8]) -> u64;
+}
+
+impl TestHelpers for vt100::Screen {
+ fn assert_process(&mut self, s: &[u8]) -> u64 {
+ let ret = self.process(s);
+ assert_eq!(ret, s.len() as u64);
+ ret
+ }
+}