ito-core 0.1.33

Core functionality and business logic for Ito
Documentation
use super::*;
use std::collections::BTreeMap;

enum Allow {
    All,
    None,
}

fn config(allow: Allow, model: Option<&str>) -> HarnessRunConfig {
    let allow_all = match allow {
        Allow::All => true,
        Allow::None => false,
    };
    HarnessRunConfig {
        prompt: "do stuff".to_string(),
        model: model.map(String::from),
        cwd: std::env::temp_dir(),
        env: BTreeMap::new(),
        interactive: false,
        allow_all,
        inactivity_timeout: None,
    }
}

#[test]
fn harness_name_is_claude() {
    let harness = ClaudeCodeHarness;
    assert_eq!(harness.harness_name(), HarnessName::Claude);
}

#[test]
fn binary_is_claude() {
    let harness = ClaudeCodeHarness;
    assert_eq!(harness.binary(), "claude");
}

#[test]
fn build_args_with_allow_all() {
    let harness = ClaudeCodeHarness;
    let cfg = config(Allow::All, Some("sonnet"));
    let args = harness.build_args(&cfg);
    assert_eq!(
        args,
        vec![
            "--model",
            "sonnet",
            "--dangerously-skip-permissions",
            "-p",
            "do stuff"
        ]
    );
}

#[test]
fn build_args_without_allow_all() {
    let harness = ClaudeCodeHarness;
    let cfg = config(Allow::None, Some("sonnet"));
    let args = harness.build_args(&cfg);
    assert_eq!(args, vec!["--model", "sonnet", "-p", "do stuff"]);
}

#[test]
fn build_args_without_model() {
    let harness = ClaudeCodeHarness;
    let cfg = config(Allow::None, None);
    let args = harness.build_args(&cfg);
    assert_eq!(args, vec!["-p", "do stuff"]);
}