use super::*;
#[test]
fn bell_event_emitted_on_bel() {
let mut parser = crate::Parser::new(TerminalSize { rows: 24, cols: 80 }, 0);
assert!(parser.screen_mut().drain_events().is_empty());
process(&mut parser, b"\x07");
let events = parser.screen_mut().drain_events();
assert!(events.contains(&ScreenEvent::Bell));
assert!(parser.screen_mut().drain_events().is_empty());
}
#[test]
fn nel() {
let mut parser = crate::Parser::new(TerminalSize { rows: 24, cols: 80 }, 0);
process(&mut parser, b"\x1b[20GA\x1bEB");
let screen = parser.screen();
assert_eq!(screen.cell(0, 19).unwrap().contents(), "A");
assert_eq!(screen.cell(1, 0).unwrap().contents(), "B");
}
#[test]
fn decaln() {
let mut parser = crate::Parser::new(TerminalSize { rows: 3, cols: 5 }, 0);
process(&mut parser, b"\x1b#8");
let screen = parser.screen();
for row in 0..3 {
for col in 0..5 {
assert_eq!(screen.cell(row, col).unwrap().contents(), "E");
}
}
assert_eq!(screen.cursor(), Position { row: 0, col: 0 });
}
#[test]
fn ed_mode_3_clears_scrollback() {
let mut parser = crate::Parser::new(TerminalSize { rows: 3, cols: 10 }, 100);
for _ in 0..5 {
process(&mut parser, b"AAAAAAAAAA\n");
}
assert!(parser.screen().grid().scrollback() == 0);
parser.screen_mut().set_scrollback(2);
assert!(parser.screen().grid().scrollback() > 0);
process(&mut parser, b"\x1b[3J");
assert_eq!(parser.screen().grid().scrollback(), 0);
}