use super::*;
fn test_b127_zeroizer<Z: MemZeroizer>(z: Z) {
let mut array: [u8; 127] = [0xAF; 127];
let ptr: *mut u8 = (&mut array[..]).as_mut_ptr();
unsafe {
z.zeroize_mem(ptr, 127);
}
assert_eq!(array, [0u8; 127]);
}
fn test_b239_lowalign_zeroizer<Z: MemZeroizer>(z: Z) {
let mut array: [u64; 30] = [0x_AFAFAFAF_AFAFAFAF; 30];
let array_ptr: *mut u64 = (&mut array[..]).as_mut_ptr();
let ptr: *mut u8 = unsafe { array_ptr.cast::<u8>().add(1) };
unsafe { z.zeroize_mem(ptr, 30 * 8 - 1) };
let mut expected: [u64; 30] = [0; 30];
expected[0] = u64::from_ne_bytes([0x_AF, 0, 0, 0, 0, 0, 0, 0]);
assert_eq!(&array[..], &expected[..]);
}
#[cfg(feature = "nightly_core_intrinsics")]
#[test]
fn test_b127_volatile_memset_zeroizer() {
test_b127_zeroizer(VolatileMemsetZeroizer);
}
#[cfg(any(
target_os = "freebsd",
target_os = "dragonfly",
target_os = "openbsd",
target_os = "netbsd",
target_os = "macos",
target_os = "ios",
target_env = "gnu",
target_env = "musl"
))]
#[test]
#[cfg_attr(miri, ignore)] fn test_b127_libc_zeroizer() {
test_b127_zeroizer(LibcZeroizer);
}
#[cfg(all(target_arch = "x86_64", target_feature = "ermsb"))]
#[test]
#[cfg_attr(miri, ignore)] fn test_b127_asm_rep_stos_zeroizer() {
test_b127_zeroizer(AsmRepStosZeroizer);
}
#[test]
fn test_b127_volatile_write_zeroizer() {
test_b127_zeroizer(VolatileWriteZeroizer);
}
#[test]
fn test_b127_volatile_write8_zeroizer() {
test_b127_zeroizer(VolatileWrite8Zeroizer);
}
#[cfg(all(target_arch = "x86_64", target_feature = "avx"))]
#[test]
fn test_b127_x86_64_avx_zeroizer() {
test_b127_zeroizer(X86_64AvxZeroizer);
}
#[cfg(all(target_arch = "x86_64", target_feature = "sse2"))]
#[test]
fn test_b127_x86_64_sse2_zeroizer() {
test_b127_zeroizer(X86_64Sse2Zeroizer);
}
#[cfg(feature = "nightly_core_intrinsics")]
#[test]
fn test_b239_lowalign_volatile_memset_zeroizer() {
test_b239_lowalign_zeroizer(VolatileMemsetZeroizer);
}
#[cfg(any(
target_os = "freebsd",
target_os = "dragonfly",
target_os = "openbsd",
target_os = "netbsd",
target_os = "macos",
target_os = "ios",
target_env = "gnu",
target_env = "musl"
))]
#[test]
#[cfg_attr(miri, ignore)] fn test_b239_lowalign_libc_zeroizer() {
test_b239_lowalign_zeroizer(LibcZeroizer);
}
#[cfg(all(target_arch = "x86_64", target_feature = "ermsb"))]
#[test]
#[cfg_attr(miri, ignore)] fn test_b239_lowalign_asm_rep_stos_zeroizer() {
test_b239_lowalign_zeroizer(AsmRepStosZeroizer);
}
#[test]
fn test_b239_lowalign_volatile_write_zeroizer() {
test_b239_lowalign_zeroizer(VolatileWriteZeroizer);
}
#[test]
fn test_b239_lowalign_volatile_write8_zeroizer() {
test_b239_lowalign_zeroizer(VolatileWrite8Zeroizer);
}
#[cfg(all(target_arch = "x86_64", target_feature = "avx"))]
#[test]
fn test_b239_lowalign_x86_64_avx_zeroizer() {
test_b239_lowalign_zeroizer(X86_64AvxZeroizer);
}
#[cfg(all(target_arch = "x86_64", target_feature = "sse2"))]
#[test]
fn test_b239_lowalign_x86_64_sse2_zeroizer() {
test_b239_lowalign_zeroizer(X86_64Sse2Zeroizer);
}