agent-tui-usecases 1.1.0

Use cases and ports for agent-tui terminal automation
Documentation
use super::*;

#[test]
fn test_mock_session_default_screen_text() {
    let session = MockSession::new("test-session");
    assert_eq!(session.screen_text(), "");
}

#[test]
fn test_mock_session_with_screen_text() {
    let session = MockSession::builder("test")
        .with_screen_text("Hello, World!")
        .build();
    assert_eq!(session.screen_text(), "Hello, World!");
}

#[test]
fn test_mock_session_with_rendered_screen() {
    let session = MockSession::builder("test")
        .with_screen_text("plain")
        .with_rendered_screen("\u{001b}[31mplain\u{001b}[0m", "plain")
        .build();

    assert_eq!(session.screen_render(), "\u{001b}[31mplain\u{001b}[0m");
    assert_eq!(session.screen_render_compact(), "plain");
}

#[test]
fn test_mock_session_update_succeeds() {
    let session = MockSession::new("test");
    let result = session.update();
    assert!(result.is_ok());
}

#[test]
fn test_mock_session_update_with_error() {
    let session = MockSession::builder("test")
        .with_update_error(SessionError::NoActiveSession)
        .build();

    let result = session.update();
    assert!(result.is_err());
}

#[test]
fn test_mock_session_terminal_write_tracks_data() {
    let session = MockSession::new("test");

    session
        .terminal_write(b"hello")
        .expect("first write should succeed");
    session
        .terminal_write(b"world")
        .expect("second write should succeed");

    let written = session.written_data();
    assert_eq!(written.len(), 2);
    assert_eq!(written[0], b"hello");
    assert_eq!(written[1], b"world");
}

#[test]
fn test_mock_session_builder_chaining() {
    let session = MockSession::builder("chain-test")
        .with_screen_text("Screen content")
        .build();

    assert_eq!(session.id, "chain-test");
    assert_eq!(session.screen_text(), "Screen content");
}