#[test]
fn bitset_and_oracles_truncate_to_shorter_input() {
let long = vec![0xFFu32; 10];
let short = vec![0x0Fu32; 1];
assert_eq!(weir::oracle::bitset::dominators(&long, &short).len(), 1);
assert_eq!(weir::oracle::bitset::must_init(&long, &short).len(), 1);
assert_eq!(weir::oracle::bitset::scc_query(&long, &short).len(), 1);
assert_eq!(weir::oracle::bitset::value_set(&long, &short).len(), 1);
assert_eq!(weir::oracle::bitset::post_dominates(&long, &short).len(), 1);
assert_eq!(weir::oracle::bitset::live_at(&long, &short).len(), 1);
assert_eq!(weir::oracle::bitset::escapes(&long, &short).len(), 1);
}
#[test]
fn bitset_oracles_return_empty_on_empty_input() {
assert!(weir::oracle::bitset::dominators(&[], &[]).is_empty());
assert!(weir::oracle::bitset::must_init(&[], &[]).is_empty());
assert!(weir::oracle::bitset::scc_query(&[], &[]).is_empty());
assert!(weir::oracle::bitset::value_set(&[], &[]).is_empty());
assert!(weir::oracle::bitset::post_dominates(&[], &[]).is_empty());
assert!(weir::oracle::bitset::live_at(&[], &[]).is_empty());
assert!(weir::oracle::bitset::escapes(&[], &[]).is_empty());
assert_eq!(weir::oracle::summary::may_alias(&[], &[]), 0);
}
#[test]
fn bitset_and_oracles_handle_u32_max_values() {
let max = vec![u32::MAX; 4];
let half = vec![0xFFFF_FFFFu32, 0x0000_FFFFu32, 0xFFFF_0000u32, 0u32];
let out = weir::oracle::bitset::dominators(&max, &half);
assert_eq!(
out,
vec![0xFFFF_FFFFu32, 0x0000_FFFFu32, 0xFFFF_0000u32, 0u32]
);
}
#[test]
fn range_check_adversarial_boundary_values() {
let hi = vec![u32::MAX, u32::MAX - 1, 0u32, 0u32];
let bnd = vec![u32::MAX, u32::MAX, 0u32, 1u32];
let out = weir::oracle::summary::range_check(&hi, &bnd);
assert_eq!(out, vec![0u32, 1u32, 0u32, 1u32]);
}
#[test]
fn may_alias_detects_high_bit_overlap_in_last_word() {
let a = vec![0u32, 0u32, 0u32, 1u32 << 31];
let b = vec![0xFFFFu32, 0u32, 0u32, 1u32 << 31];
assert_eq!(weir::oracle::summary::may_alias(&a, &b), 1);
}
#[test]
fn may_alias_returns_zero_when_one_side_is_zero() {
let a = vec![0u32, 0u32, 0u32, 0u32];
let b = vec![0xFFFFu32; 4];
assert_eq!(weir::oracle::summary::may_alias(&a, &b), 0);
assert_eq!(weir::oracle::summary::may_alias(&b, &a), 0);
}