From 76aeb85e99e088151c867d86858705bf38c345de Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 8 Nov 2019 04:13:08 -0500 Subject: fix wide character handling in contents_formatted and contents_diff --- tests/text.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests/text.rs') 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] -- cgit v1.2.3-54-g00ecf