in air/src/air/assertions/tests.rs [46:78]
fn periodic_assertion() {
let value = rand_value::<BaseElement>();
let a = Assertion::periodic(4, 1, 16, value);
assert_eq!(4, a.register);
assert_eq!(1, a.first_step);
assert_eq!(vec![value], a.values);
assert_eq!(16, a.stride);
assert_eq!(1, a.get_num_steps(16));
assert_eq!(2, a.get_num_steps(32));
a.apply(16, |step, val| {
assert_eq!(1, step);
assert_eq!(value, val);
});
a.apply(32, |step, val| {
if step == 1 || step == 17 {
assert_eq!(value, val);
return;
}
assert!(false);
});
assert_eq!(Ok(()), a.validate_trace_width(5));
assert_eq!(
Err(AssertionError::TraceWidthTooShort(4, 2)),
a.validate_trace_width(2)
);
assert_eq!(Ok(()), a.validate_trace_length(16));
assert_eq!(
Err(AssertionError::TraceLengthTooShort(16, 8)),
a.validate_trace_length(8)
);
}