tastty-core 0.1.0

Sans-IO core of the tastty terminal session library: VT parser, screen buffer, and byte encoders.
use super::*;

#[test]
fn cpr_at_origin() {
    let mut parser = crate::Parser::new(TerminalSize { rows: 24, cols: 80 }, 0);
    process(&mut parser, b"\x1b[6n");
    assert_eq!(drain_replies(&mut parser), b"\x1b[1;1R");
}

#[test]
fn drain_empty() {
    let mut parser = crate::Parser::new(TerminalSize { rows: 24, cols: 80 }, 0);
    assert!(drain_replies(&mut parser).is_empty());
}

#[test]
fn multiple_queries_single_drain() {
    let mut parser = crate::Parser::new(TerminalSize { rows: 24, cols: 80 }, 0);
    process(&mut parser, b"\x1b[c\x1b[5n");
    let resp = drain_replies(&mut parser);
    assert_eq!(resp, b"\x1b[?62;22;52c\x1b[0n");
}

#[test]
fn drain_clears_buffer() {
    let mut parser = crate::Parser::new(TerminalSize { rows: 24, cols: 80 }, 0);
    process(&mut parser, b"\x1b[c");
    assert!(!drain_replies(&mut parser).is_empty());
    assert!(drain_replies(&mut parser).is_empty());
}