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);
}