encounter-rs 0.1.0

Resolution engine for multi-character encounters with pluggable scoring backends
Documentation
use encounter::catalog::load_catalog_dir;

#[test]
fn loads_fixture_catalog() {
    let fixtures = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/fixtures");
    let entries = load_catalog_dir(&fixtures).unwrap();
    assert!(!entries.is_empty());
    let reveal = entries
        .iter()
        .find(|e| e.spec.name == "reveal_secret")
        .unwrap();
    assert_eq!(reveal.spec.domain, "information");
    assert!(!reveal.precondition.is_empty());
    assert!(!reveal.spec.effects_on_accept.is_empty());
}

#[test]
fn handles_missing_fabula_file_gracefully() {
    let dir = tempfile::tempdir().unwrap();
    std::fs::write(
        dir.path().join("orphan.toml"),
        r#"name = "orphan"
domain = "test"
bindings = ["self"]
"#,
    )
    .unwrap();
    let entries = load_catalog_dir(dir.path()).unwrap();
    assert_eq!(entries.len(), 1);
    assert!(entries[0].precondition.is_empty());
}