pub(crate) use super::*;
#[test]
fn test_loading_mode_default() {
assert_eq!(LoadingMode::default(), LoadingMode::Eager);
}
#[test]
fn test_loading_mode_description() {
assert!(!LoadingMode::Eager.description().is_empty());
assert!(!LoadingMode::Streaming.description().is_empty());
}
#[test]
fn test_loading_mode_zero_copy() {
assert!(LoadingMode::MappedDemand.supports_zero_copy());
assert!(!LoadingMode::Eager.supports_zero_copy());
}
#[test]
fn test_loading_mode_deterministic() {
assert!(LoadingMode::Eager.is_deterministic());
assert!(LoadingMode::Streaming.is_deterministic());
assert!(!LoadingMode::MappedDemand.is_deterministic());
}
#[test]
fn test_loading_mode_for_memory_budget() {
assert_eq!(LoadingMode::for_memory_budget(200, 100), LoadingMode::Eager);
assert_eq!(
LoadingMode::for_memory_budget(100, 100),
LoadingMode::MappedDemand
);
assert_eq!(
LoadingMode::for_memory_budget(512 * 1024, 1024 * 1024),
LoadingMode::Streaming
);
}
#[test]
fn test_verification_level_default() {
assert_eq!(VerificationLevel::default(), VerificationLevel::Standard);
}
#[test]
fn test_verification_level_checksums() {
assert!(!VerificationLevel::UnsafeSkip.verifies_checksum());
assert!(VerificationLevel::ChecksumOnly.verifies_checksum());
assert!(VerificationLevel::Standard.verifies_checksum());
assert!(VerificationLevel::Paranoid.verifies_checksum());
}
#[test]
fn test_verification_level_signatures() {
assert!(!VerificationLevel::UnsafeSkip.verifies_signature());
assert!(!VerificationLevel::ChecksumOnly.verifies_signature());
assert!(VerificationLevel::Standard.verifies_signature());
assert!(VerificationLevel::Paranoid.verifies_signature());
}
#[test]
fn test_verification_level_asil() {
assert_eq!(VerificationLevel::Paranoid.asil_level(), "ASIL-D");
assert_eq!(VerificationLevel::Standard.asil_level(), "ASIL-B");
}
#[test]
fn test_verification_level_dal() {
assert_eq!(VerificationLevel::Paranoid.dal_level(), "DAL-A");
assert_eq!(VerificationLevel::Standard.dal_level(), "DAL-C");
}
#[test]
fn test_buffer_pool_creation() {
let pool = BufferPool::new(4, 1024);
assert_eq!(pool.buffer_size(), 1024);
assert_eq!(pool.free_count(), 4);
assert_eq!(pool.total_count(), 4);
assert_eq!(pool.total_memory(), 4096);
}
#[test]
fn test_backend_default() {
assert_eq!(Backend::default(), Backend::CpuSimd);
}
#[test]
fn test_backend_simd_support() {
assert!(Backend::CpuSimd.supports_simd());
assert!(!Backend::Wasm.supports_simd());
}
#[test]
fn test_backend_std_requirement() {
assert!(Backend::CpuSimd.requires_std());
assert!(!Backend::Embedded.requires_std());
}
#[test]
fn test_load_config_default() {
let config = LoadConfig::default();
assert_eq!(config.mode, LoadingMode::Eager);
assert_eq!(config.verification, VerificationLevel::Standard);
assert_eq!(config.backend, Backend::CpuSimd);
assert!(config.max_memory_bytes.is_none());
}
#[test]
fn test_load_config_embedded() {
let config = LoadConfig::embedded(1024 * 1024);
assert_eq!(config.mode, LoadingMode::Eager);
assert_eq!(config.verification, VerificationLevel::Paranoid);
assert_eq!(config.backend, Backend::Embedded);
assert_eq!(config.max_memory_bytes, Some(1024 * 1024));
}
#[test]
fn test_load_config_server() {
let config = LoadConfig::server();
assert_eq!(config.mode, LoadingMode::MappedDemand);
assert_eq!(config.verification, VerificationLevel::Standard);
assert!(config.max_memory_bytes.is_none());
}
#[test]
fn test_load_config_wasm() {
let config = LoadConfig::wasm();
assert_eq!(config.mode, LoadingMode::Streaming);
assert_eq!(config.backend, Backend::Wasm);
assert!(config.streaming);
}
#[test]
fn test_load_config_builder() {
let config = LoadConfig::new()
.with_mode(LoadingMode::Streaming)
.with_max_memory(1024)
.with_verification(VerificationLevel::Paranoid)
.with_backend(Backend::Gpu)
.with_time_budget(Duration::from_millis(100))
.with_streaming(512 * 1024);
assert_eq!(config.mode, LoadingMode::Streaming);
assert_eq!(config.max_memory_bytes, Some(1024));
assert_eq!(config.verification, VerificationLevel::Paranoid);
assert_eq!(config.backend, Backend::Gpu);
assert!(config.streaming);
assert_eq!(config.ring_buffer_size, 512 * 1024);
}
#[test]
fn test_load_result() {
let result = LoadResult::new(Duration::from_millis(100), 10 * 1024 * 1024);
assert_eq!(result.memory_used, 10 * 1024 * 1024);
let throughput = result.throughput_mbps();
assert!((throughput - 100.0).abs() < 1.0);
}
#[test]
fn test_load_result_zero_time() {
let result = LoadResult::new(Duration::ZERO, 1024);
assert_eq!(result.throughput_mbps(), 0.0);
}
#[test]
fn test_backend_gpu_accelerated() {
assert!(Backend::Gpu.is_gpu_accelerated());
assert!(Backend::Cuda.is_gpu_accelerated());
assert!(!Backend::CpuSimd.is_gpu_accelerated());
assert!(!Backend::Wasm.is_gpu_accelerated());
assert!(!Backend::Embedded.is_gpu_accelerated());
}
#[test]
fn test_backend_nvidia_driver_requirement() {
assert!(Backend::Cuda.requires_nvidia_driver());
assert!(!Backend::Gpu.requires_nvidia_driver());
assert!(!Backend::CpuSimd.requires_nvidia_driver());
assert!(!Backend::Wasm.requires_nvidia_driver());
assert!(!Backend::Embedded.requires_nvidia_driver());
}
#[test]
fn test_load_config_cuda() {
let config = LoadConfig::cuda();
assert_eq!(config.mode, LoadingMode::MappedDemand);
assert_eq!(config.backend, Backend::Cuda);
assert_eq!(config.verification, VerificationLevel::Standard);
assert!(config.max_memory_bytes.is_none());
assert!(!config.streaming);
assert!(config.backend.requires_nvidia_driver());
assert!(config.backend.is_gpu_accelerated());
}
#[test]
fn test_load_config_gpu() {
let config = LoadConfig::gpu();
assert_eq!(config.mode, LoadingMode::MappedDemand);
assert_eq!(config.backend, Backend::Gpu);
assert_eq!(config.verification, VerificationLevel::Standard);
assert!(config.max_memory_bytes.is_none());
assert!(!config.streaming);
assert!(!config.backend.requires_nvidia_driver());
assert!(config.backend.is_gpu_accelerated());
}
#[test]
fn test_backend_cuda_properties() {
let backend = Backend::Cuda;
assert!(backend.requires_std());
assert!(!backend.supports_simd());
assert!(backend.is_gpu_accelerated());
assert!(backend.requires_nvidia_driver());
}
#[test]
fn test_load_config_builder_with_cuda() {
let config = LoadConfig::new()
.with_backend(Backend::Cuda)
.with_mode(LoadingMode::Eager)
.with_verification(VerificationLevel::Paranoid);
assert_eq!(config.backend, Backend::Cuda);
assert_eq!(config.mode, LoadingMode::Eager);
assert_eq!(config.verification, VerificationLevel::Paranoid);
}