lemma-engine 0.8.14

A language that means business.
Documentation
use lemma::engine::EMBEDDED_STDLIB_REPOSITORY;
use lemma::{Engine, ErrorKind};

#[test]
fn list_includes_embedded_lemma_repository_with_si() {
    let engine = Engine::new();
    let repos = engine.list();
    let lemma = repos
        .iter()
        .find(|r| r.repository.name.as_deref() == Some(EMBEDDED_STDLIB_REPOSITORY))
        .expect("embedded lemma repository must appear in list");
    assert!(
        lemma
            .specs
            .iter()
            .flat_map(|ss| ss.iter_specs())
            .any(|s| s.name == "si"),
        "expected spec si in lemma repo"
    );
}

#[test]
fn format_repository_lemma_contains_si_duration() {
    let engine = Engine::new();
    let text = engine
        .format_repository(EMBEDDED_STDLIB_REPOSITORY)
        .expect("format embedded lemma repo");
    assert!(
        text.contains("repo lemma"),
        "expected repo header, got:\n{text}"
    );
    assert!(
        text.contains("spec si"),
        "expected spec si in formatted output, got:\n{text}"
    );
    assert!(
        text.contains("duration") && text.contains("trait duration"),
        "expected duration typedef in formatted output, got:\n{text}"
    );
}

#[test]
fn format_repository_unknown_qualifier_errors() {
    let engine = Engine::new();
    let err = engine
        .format_repository("workspace")
        .expect_err("workspace is not a repository qualifier");
    assert!(
        err.kind() == ErrorKind::Request,
        "expected request error, got: {err:?}"
    );
}