use uor_foundation::enforcement::{ConstrainedTypeInput, Grounded, Validated};
use uor_foundation::pipeline::{run_stream, StreamDeclaration, StreamDriver};
use uor_foundation_test_helpers::{validated_runtime, Fnv1aHasher16, REFERENCE_INLINE_BYTES as N};
fn main() {
let decl: Validated<StreamDeclaration<'_, N>> =
validated_runtime(StreamDeclaration::new::<ConstrainedTypeInput>(5));
let driver: StreamDriver<ConstrainedTypeInput, _, Fnv1aHasher16, N, 32> = run_stream(decl);
let mut step = 0u32;
let mut last_address = None;
for result in driver {
let grounded: Grounded<'static, ConstrainedTypeInput, N> = result.expect("step succeeds");
println!(
"step {step}: unit_address={:?} witt_bits={}",
grounded.unit_address(),
grounded.witt_level_bits()
);
if let Some(prev) = last_address {
assert_ne!(
prev,
grounded.unit_address(),
"successive steps must have distinct unit_addresses"
);
}
last_address = Some(grounded.unit_address());
step += 1;
}
println!("stream terminated after {step} step(s)");
}