khive-fold 0.13.0

Cognitive primitives — Fold, Anchor, Objective, Selector
Documentation
use super::*;

#[test]
fn precision_default_is_one() {
    let sel = Selection::new(42i32, 0.8, 0);
    assert_eq!(sel.precision, 1.0);
}

#[test]
fn with_precision_sets_field() {
    let sel = Selection::new(42i32, 0.8, 0).with_precision(0.5);
    assert_eq!(sel.precision, 0.5);
}

#[test]
fn map_propagates_precision() {
    let sel = Selection::new(42i32, 0.8, 0).with_precision(0.75);
    let mapped = sel.map(|v| v.to_string());
    assert_eq!(mapped.precision, 0.75);
    assert_eq!(mapped.item, "42");
    assert_eq!(mapped.score, 0.8);
}

#[test]
fn map_preserves_all_stats() {
    let sel = Selection::new(1i32, 0.5, 2)
        .with_precision(0.6)
        .with_considered(10)
        .with_passed(7)
        .with_reason("test");
    let mapped = sel.map(|v| v * 2);
    assert_eq!(mapped.item, 2);
    assert_eq!(mapped.score, 0.5);
    assert_eq!(mapped.precision, 0.6);
    assert_eq!(mapped.index, 2);
    assert_eq!(mapped.considered, 10);
    assert_eq!(mapped.passed, 7);
    assert_eq!(mapped.reason.as_deref(), Some("test"));
}