use proptest::prelude::*;
use weir::oracle::summary::may_alias as cpu_ref;
proptest! {
#![proptest_config(ProptestConfig::with_cases(10_000))]
#[test]
fn alias_is_commutative(
a in proptest::collection::vec(any::<u32>(), 1..16),
b in proptest::collection::vec(any::<u32>(), 1..16),
) {
prop_assert_eq!(cpu_ref(&a, &b), cpu_ref(&b, &a));
}
#[test]
fn alias_with_self_iff_nonempty(
a in proptest::collection::vec(any::<u32>(), 1..16),
) {
let any_nonzero = a.iter().any(|w| *w != 0);
prop_assert_eq!(cpu_ref(&a, &a), u32::from(any_nonzero));
}
#[test]
fn alias_with_empty_is_zero(
a in proptest::collection::vec(any::<u32>(), 1..16),
) {
let empty = vec![0u32; a.len()];
prop_assert_eq!(cpu_ref(&a, &empty), 0);
}
#[test]
fn output_is_indicator(
a in proptest::collection::vec(any::<u32>(), 1..16),
b in proptest::collection::vec(any::<u32>(), 1..16),
) {
let out = cpu_ref(&a, &b);
prop_assert!(out == 0 || out == 1);
}
}