embedded-cli 0.2.1

CLI with autocompletion, help and history for embedded systems (like Arduino or STM32)
Documentation
use crate::wrapper::CliWrapper;

use crate::terminal::assert_terminal;

#[test]
fn write_external() {
    let mut cli = CliWrapper::default();

    assert_terminal!(cli.terminal(), 2, vec!["$"]);

    cli.write_str("test");

    assert_terminal!(cli.terminal(), 2, vec!["test", "$"]);

    cli.process_str("set");

    assert_terminal!(cli.terminal(), 5, vec!["test", "$ set"]);

    cli.write_str("abc");

    assert_terminal!(cli.terminal(), 5, vec!["test", "abc", "$ set"]);

    cli.write_str("def\r\n");

    assert_terminal!(cli.terminal(), 5, vec!["test", "abc", "def", "$ set"]);

    cli.write_str("gh\r\n\r\n");

    assert_terminal!(
        cli.terminal(),
        5,
        vec!["test", "abc", "def", "gh", "", "$ set"]
    );
}

#[test]
fn write_from_service() {
    let mut cli = CliWrapper::default();

    cli.set_handler(|cli, cmd| {
        cli.writer().write_str(r#"from command ""#)?;
        cli.writer().write_str(&cmd.name)?;
        cli.writer().writeln_str(r#"""#)?;
        cli.writer().write_str("another line")?;
        Ok(())
    });

    assert_terminal!(cli.terminal(), 2, vec!["$"]);

    cli.process_str("set 123\n");

    assert_terminal!(
        cli.terminal(),
        2,
        vec!["$ set 123", r#"from command "set""#, "another line", "$"]
    );
}