#![allow(clippy::print_stdout, clippy::print_stderr)]
use sipx_testkit::transaction_sequence::{corpus_dir, run, seeds, write_corpus};
fn main() -> std::io::Result<()> {
if std::env::args().any(|arg| arg == "--write") {
let written = write_corpus()?;
println!(
"wrote {written} seed programs to {}",
corpus_dir().display()
);
return Ok(());
}
let mut violations = 0;
for seed in seeds() {
let result = run(&seed.program);
println!("=== {} ({} bytes)", seed.name, seed.program.encode().len());
for line in &result.trace {
println!(" {line}");
}
for violation in &result.violations {
println!(" !! {violation}");
violations += 1;
}
}
if violations > 0 {
eprintln!("{violations} invariant violation(s) in the seed corpus");
}
Ok(())
}