dpm-engine 0.1.0

Command/query execution engine for DPM
Documentation
use super::*;

#[test]
fn reviewed_changes_set_the_basis_policy_only_before_execution_and_never_author_history() {
    let mut p = provisional(0.0, DependencyPolicy::Hard);
    let mut verified = p.plan.clone();
    verified.dependencies[0].start_basis = StartBasis::Verified;
    let reason = "B waits for verified A";
    let mut probe = p.plan.clone();
    let change = crate::plan_change(&probe, &verified, reason).expect("delta");
    ok(&mut probe, &reviewer(), change, 0);
    started_on_first_attempt(&mut p);
    verified = p.plan.clone();
    verified.dependencies[0].start_basis = StartBasis::Verified;
    let mut forged = p.plan.clone();
    forged
        .work_items
        .get_mut(&p.b)
        .expect("b")
        .execution
        .basis
        .clear();
    for proposal in [verified, forged] {
        let before = p.plan.clone();
        crate::apply_plan_change(
            &mut p.plan,
            reviewer(),
            &proposal,
            reason,
            t(4),
            dpm_model::OperationId::new(),
        )
        .expect_err("refused");
        assert_eq!(p.plan, before, "a refused change alters nothing");
    }
}