use super::*;
#[test]
fn initial_state() {
let screen = make_screen(24, 80);
assert_eq!(screen.size(), TerminalSize { rows: 24, cols: 80 });
assert_eq!(screen.cursor(), Position { row: 0, col: 0 });
assert!(!screen.mode(TerminalMode::HideCursor));
assert!(!screen.mode(TerminalMode::AlternateScreen));
}
#[test]
fn text_and_cursor() {
let mut screen = make_screen(24, 80);
screen.text('H');
screen.text('i');
assert_eq!(screen.cursor(), Position { row: 0, col: 2 });
let cell = screen.cell(0, 0).unwrap();
assert_eq!(cell.contents(), "H");
let cell = screen.cell(0, 1).unwrap();
assert_eq!(cell.contents(), "i");
}
#[test]
fn cursor_movement_csi() {
let mut screen = make_screen(24, 80);
screen.cup((5, 10));
assert_eq!(screen.cursor(), Position { row: 4, col: 9 });
}
#[test]
fn erase_display() {
let mut screen = make_screen(24, 80);
screen.text('A');
screen.ed(2); assert!(!screen.cell(0, 0).unwrap().has_contents());
}
#[test]
fn linefeed_and_cr() {
let mut screen = make_screen(24, 80);
screen.text('A');
screen.cr();
assert_eq!(screen.cursor(), Position { row: 0, col: 0 });
screen.lf();
assert_eq!(screen.cursor(), Position { row: 1, col: 0 });
}
#[test]
fn reset() {
let mut screen = make_screen(24, 80);
screen.text('X');
screen.cup((5, 5));
assert!(screen.drain_events().is_empty());
screen.ris();
assert_eq!(screen.cursor(), Position { row: 0, col: 0 });
assert!(!screen.cell(0, 0).unwrap().has_contents());
let events = screen.drain_events();
assert!(events.contains(&ScreenEvent::ScreenCleared));
assert!(screen.drain_events().is_empty());
}
#[test]
fn clear_pending_on_ed2() {
let mut screen = make_screen(24, 80);
screen.text('A');
assert!(screen.drain_events().is_empty());
screen.ed(2);
let events = screen.drain_events();
assert!(events.contains(&ScreenEvent::ScreenCleared));
assert!(screen.drain_events().is_empty());
screen.text('B');
screen.ed(0);
assert!(!screen.drain_events().contains(&ScreenEvent::ScreenCleared));
}
#[cfg(feature = "widget")]
#[test]
fn tui_term_screen_trait() {
let mut screen = make_screen(24, 80);
screen.text('Z');
let cell: Option<&crate::cell::Cell> = tui_term::widget::Screen::cell(&screen, 0, 0);
assert!(cell.is_some());
}