use super::gpu::*;
#[test]
fn test_compute_backend_default_is_simd() {
let backend = ComputeBackend::default();
assert_eq!(backend, ComputeBackend::Simd);
}
#[test]
fn test_best_available_returns_simd_without_gpu_feature() {
#[cfg(not(feature = "gpu"))]
{
let backend = ComputeBackend::best_available();
assert_eq!(backend, ComputeBackend::Simd);
}
}
#[test]
fn test_gpu_available_false_without_feature() {
#[cfg(not(feature = "gpu"))]
{
assert!(!ComputeBackend::gpu_available());
}
}
#[test]
fn test_compute_backend_fallback_to_simd() {
let backend = ComputeBackend::best_available();
#[cfg(feature = "gpu")]
assert!(
backend == ComputeBackend::Simd || backend == ComputeBackend::Gpu,
"best_available() returned unexpected variant: {backend:?}"
);
#[cfg(not(feature = "gpu"))]
assert_eq!(backend, ComputeBackend::Simd);
}
#[test]
fn test_gpu_available_consistency() {
let first = ComputeBackend::gpu_available();
let second = ComputeBackend::gpu_available();
let third = ComputeBackend::gpu_available();
assert_eq!(first, second, "gpu_available() must be consistent");
assert_eq!(second, third, "gpu_available() must be consistent");
}
#[cfg(feature = "gpu")]
#[test]
fn test_gpu_accelerator_none_without_gpu() {
use super::gpu::GpuAccelerator;
let gpu = GpuAccelerator::new();
if gpu.is_none() {
assert!(
!GpuAccelerator::is_available(),
"GpuAccelerator::new() returned None while is_available() reported true"
);
}
}