dusk-cdf 0.3.0

PLONK debugger CDF implementation
Documentation
use std::cmp;

use dusk_cdf::*;
use dusk_zkp_debugger_utils::*;

#[test]
fn indexed_witness_validate_works() {
    let witnesses = 100;
    let constraints = 1000;

    let preamble = *Preamble::default()
        .with_witnesses(witnesses)
        .with_constraints(constraints);

    let mut generator = CDFGenerator::new(0x8437, preamble);

    let generated = generator.gen_indexed_witness();

    let id = generated.index();
    let origin = generated.origin();
    let value = generated.value();

    let ok_id = cmp::min(id, witnesses - 1);
    let wrong_id = cmp::max(id, witnesses);

    IndexedWitness::new(ok_id, *origin, *value)
        .validate(&preamble)
        .expect("consistent indexed witness should validate");

    IndexedWitness::new(wrong_id, *origin, *value)
        .validate(&preamble)
        .expect_err("inconsistent indexed witness shouldn't validate");

    let ok_constraint = constraints - 1;
    let wrong_constraint = constraints;

    IndexedWitness::new(ok_id, Some(ok_constraint), *value)
        .validate(&preamble)
        .expect("consistent indexed witness should validate");

    IndexedWitness::new(ok_id, Some(wrong_constraint), *value)
        .validate(&preamble)
        .expect_err("inconsistent indexed witness shouldn't validate");
}

#[test]
fn witness_validate_works() {
    let witnesses = 100;
    let constraints = 1000;

    let preamble = *Preamble::default()
        .with_witnesses(witnesses)
        .with_constraints(constraints);

    let mut generator = CDFGenerator::new(0x8437, preamble);

    let witness = generator.gen_witness();

    witness
        .source()
        .validate(&Default::default())
        .expect("failed to validate witness source");

    witness
        .validate(&Default::default())
        .expect("failed to validate witness");
}