#[cfg(kani)]
mod verification {
#[derive(Copy, Clone, Debug, kani::Arbitrary)]
enum MockComponent {
Normal,
CurDir,
ParentDir,
RootDir,
Prefix,
}
fn virtualize(components: &[MockComponent]) -> Vec<MockComponent> {
let mut parts = Vec::new();
for comp in components {
match comp {
MockComponent::Normal => parts.push(MockComponent::Normal),
MockComponent::CurDir => {}
MockComponent::ParentDir => {
if parts.pop().is_none() {
}
}
MockComponent::RootDir | MockComponent::Prefix => {
parts.clear();
}
}
}
parts
}
#[kani::proof]
#[kani::unwind(10)]
fn verify_virtualize_clamping() {
let components: [MockComponent; 8] = kani::any();
let result = virtualize(&components);
for comp in &result {
match comp {
MockComponent::Normal => {}
_ => panic!("Result contained non-Normal component: {:?}", comp),
}
}
}
}