fn prepare_assertions()

in air/src/air/tests.rs [223:261]


fn prepare_assertions() {
    let values = vec![
        BaseElement::new(1),
        BaseElement::new(2),
        BaseElement::new(3),
        BaseElement::new(4),
    ];

    let mut assertions = vec![
        Assertion::single(0, 9, BaseElement::new(5)), // register 0, step 9
        Assertion::single(0, 0, BaseElement::new(3)), // register 0, step 0
        Assertion::sequence(0, 3, 4, values.clone()), // register 1, steps 2, 6, 10, 14
        Assertion::sequence(0, 2, 4, values.clone()), // register 0, steps 2, 6, 10, 14
        Assertion::periodic(1, 3, 8, BaseElement::new(7)), //register 1, steps 3, 11
        Assertion::sequence(1, 0, 8, values[..2].to_vec()), // register 1, steps 0, 8
    ];

    // assertions should be sorted by stride, first step, and register
    let expected = vec![
        Assertion::single(0, 0, BaseElement::new(3)), // register 0, step 0
        Assertion::single(0, 9, BaseElement::new(5)), // register 0, step 9
        Assertion::sequence(0, 2, 4, values.clone()), // register 0, steps 2, 6, 10, 14
        Assertion::sequence(0, 3, 4, values.clone()), // register 1, steps 2, 6, 10, 14
        Assertion::sequence(1, 0, 8, values[..2].to_vec()), // register 1, steps 0, 8
        Assertion::periodic(1, 3, 8, BaseElement::new(7)), //register 1, steps 3, 11
    ];

    let context = build_context(16, 2);
    let result = super::prepare_assertions(assertions.clone(), &context);
    assert_eq!(expected, result);

    shuffle(&mut assertions);
    let result = super::prepare_assertions(assertions.clone(), &context);
    assert_eq!(expected, result);

    shuffle(&mut assertions);
    let result = super::prepare_assertions(assertions.clone(), &context);
    assert_eq!(expected, result);
}