aboutsummaryrefslogtreecommitdiffstats
path: root/tests/text.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-08 04:13:08 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-08 06:46:33 -0500
commit76aeb85e99e088151c867d86858705bf38c345de (patch)
treeab4a9375980026885c707f4af71b3b49a5f1bf17 /tests/text.rs
parentf5e9c72622f2fceeb083f5df872c77dd1d39cffb (diff)
downloadvt100-rust-76aeb85e99e088151c867d86858705bf38c345de.tar.gz
vt100-rust-76aeb85e99e088151c867d86858705bf38c345de.zip
fix wide character handling in contents_formatted and contents_diff
Diffstat (limited to 'tests/text.rs')
-rw-r--r--tests/text.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/text.rs b/tests/text.rs
index 24170b8..24c700e 100644
--- a/tests/text.rs
+++ b/tests/text.rs
@@ -46,7 +46,9 @@ fn newlines() {
#[test]
fn wide() {
let mut parser = vt100::Parser::new(24, 80);
+ let screen1 = parser.screen().clone();
parser.process("aデbネ".as_bytes());
+ let screen2 = parser.screen().clone();
assert_eq!(parser.screen().cell(0, 0).unwrap().contents(), "a");
assert_eq!(parser.screen().cell(0, 1).unwrap().contents(), "デ");
assert_eq!(parser.screen().cell(0, 2).unwrap().contents(), "");
@@ -56,6 +58,27 @@ fn wide() {
assert_eq!(parser.screen().cell(0, 6).unwrap().contents(), "");
assert_eq!(parser.screen().cell(1, 0).unwrap().contents(), "");
assert_eq!(parser.screen().contents(), "aデbネ");
+ assert_eq!(parser.screen().cursor_position(), (0, 6));
+ assert_eq!(
+ parser.screen().contents_formatted(),
+ "\x1b[?25h\x1b[H\x1b[Jaデbネ".as_bytes()
+ );
+ assert_eq!(
+ parser.screen().contents_diff(&screen1),
+ "\x1b[m\x1b[1;1Haデbネ".as_bytes()
+ );
+
+ parser.process(b"\x1b[1;1H\x1b[3Cc");
+ assert_eq!(parser.screen().contents(), "aデcネ");
+ assert_eq!(parser.screen().cursor_position(), (0, 4));
+ assert_eq!(
+ parser.screen().contents_formatted(),
+ "\x1b[?25h\x1b[H\x1b[Jaデcネ\x1b[1;5H".as_bytes()
+ );
+ assert_eq!(
+ parser.screen().contents_diff(&screen2),
+ "\x1b[m\x1b[1;1H\x1b[3Cc".as_bytes()
+ );
}
#[test]