nextdeck 0.1.0

A TUI wrapper for cargo-nextest, Clap-powered xtasks, and more.
use super::*;

#[test]
fn set_text_places_cursor_at_end() {
    let mut input = InputField::default();

    input.set_text("idea");

    assert_eq!(input.view(8, true), "idea_   ");
}

#[test]
fn edits_at_cursor_position() {
    let mut input = InputField::default();
    input.set_text("idea");
    input.input(InputFieldInput::new(InputFieldKey::Left));
    input.input(InputFieldInput::char('X'));

    assert_eq!(input.text(), "ideXa");
    assert_eq!(input.view(8, true), "ideX_a  ");
}

#[test]
fn deletes_around_cursor() {
    let mut input = InputField::default();
    input.set_text("abcd");
    input.input(InputFieldInput::new(InputFieldKey::Left));
    input.input(InputFieldInput::new(InputFieldKey::Backspace));
    input.input(InputFieldInput::new(InputFieldKey::Delete));

    assert_eq!(input.text(), "ab");
    assert_eq!(input.view(6, true), "ab_   ");
}

#[test]
fn view_keeps_cursor_visible_for_long_text() {
    let mut input = InputField::default();
    input.set_text("abcdefghijklmnopqrstuvwxyz");

    assert_eq!(input.view(8, true), "tuvwxyz_");
}

#[test]
fn home_and_end_move_cursor() {
    let mut input = InputField::default();
    input.set_text("idea");
    input.input(InputFieldInput::new(InputFieldKey::Home));
    assert_eq!(input.view(6, true), "_idea ");

    input.input(InputFieldInput::new(InputFieldKey::End));
    assert_eq!(input.view(6, true), "idea_ ");
}