#[cfg(feature = "production")]
use blvm_consensus::optimizations::{
simd_vectorization::{batch_double_sha256, batch_hash160, batch_ripemd160, batch_sha256},
CacheAlignedHash,
};
#[cfg(feature = "production")]
#[test]
fn test_batch_sha256_empty() {
let inputs: Vec<&[u8]> = vec![];
let results = batch_sha256(&inputs);
assert_eq!(results.len(), 0);
}
#[cfg(feature = "production")]
#[test]
fn test_batch_sha256_single() {
let inputs = vec![b"test data".as_slice()];
let results = batch_sha256(&inputs);
assert_eq!(results.len(), 1);
assert_eq!(results[0].len(), 32);
}
#[cfg(feature = "production")]
#[test]
fn test_batch_sha256_multiple() {
let inputs = vec![
b"input1".as_slice(),
b"input2".as_slice(),
b"input3".as_slice(),
];
let results = batch_sha256(&inputs);
assert_eq!(results.len(), 3);
for result in &results {
assert_eq!(result.len(), 32);
}
assert_ne!(results[0], results[1]);
assert_ne!(results[1], results[2]);
}
#[cfg(feature = "production")]
#[test]
fn test_batch_double_sha256() {
let inputs = vec![b"test1".as_slice(), b"test2".as_slice()];
let results = batch_double_sha256(&inputs);
assert_eq!(results.len(), 2);
for result in results {
assert_eq!(result.len(), 32);
}
}
#[cfg(feature = "production")]
#[test]
fn test_batch_ripemd160() {
let inputs = vec![b"test1".as_slice(), b"test2".as_slice()];
let results = batch_ripemd160(&inputs);
assert_eq!(results.len(), 2);
for result in results {
assert_eq!(result.len(), 20); }
}
#[cfg(feature = "production")]
#[test]
fn test_batch_hash160() {
let inputs = vec![b"test1".as_slice(), b"test2".as_slice()];
let results = batch_hash160(&inputs);
assert_eq!(results.len(), 2);
for result in results {
assert_eq!(result.len(), 20); }
}
#[cfg(feature = "production")]
#[test]
fn test_cache_aligned_hash() {
let hash = [0x42u8; 32];
let aligned = CacheAlignedHash::new(hash);
let bytes = aligned.as_bytes();
assert_eq!(bytes, &hash);
}
#[cfg(feature = "production")]
#[test]
fn test_batch_operations_consistency() {
use sha2::{Digest, Sha256};
let input = b"test data";
let individual = Sha256::digest(input);
let batch_results = batch_sha256(&[input.as_slice()]);
assert_eq!(batch_results[0].as_slice(), individual.as_slice());
}
#[cfg(not(feature = "production"))]
#[test]
fn test_optimizations_require_production_feature() {
assert!(true);
}