#[cfg(feature = "async-detect")]
mod async_tests {
use crate::*;
#[tokio::test]
async fn detect_async_returns_cpu() {
let registry = AcceleratorRegistry::detect_async().await.unwrap();
assert!(!registry.all_profiles().is_empty());
assert!(
registry
.all_profiles()
.iter()
.any(|p| matches!(p.accelerator, AcceleratorType::Cpu))
);
}
#[tokio::test]
async fn detect_async_matches_sync() {
let async_reg = AcceleratorRegistry::detect_async().await.unwrap();
let sync_reg = AcceleratorRegistry::detect();
let async_families: std::collections::HashSet<_> = async_reg
.all_profiles()
.iter()
.map(|p| p.accelerator.family())
.collect();
let sync_families: std::collections::HashSet<_> = sync_reg
.all_profiles()
.iter()
.map(|p| p.accelerator.family())
.collect();
assert_eq!(async_families, sync_families);
}
#[tokio::test]
async fn detect_async_builder() {
let registry = DetectBuilder::none().detect_async().await.unwrap();
assert!(!registry.all_profiles().is_empty());
assert!(
registry
.all_profiles()
.iter()
.all(|p| matches!(p.accelerator, AcceleratorType::Cpu))
);
}
#[tokio::test]
async fn detect_async_has_warnings_not_errors() {
let registry = AcceleratorRegistry::detect_async().await.unwrap();
for w in registry.warnings() {
let msg = format!("{}", w);
assert!(!msg.contains("panic"), "unexpected panic warning: {}", msg);
}
}
#[tokio::test]
async fn detect_async_serializable() {
let registry = AcceleratorRegistry::detect_async().await.unwrap();
let json = serde_json::to_string(®istry).unwrap();
let deserialized = AcceleratorRegistry::from_json(&json).unwrap();
assert_eq!(
registry.all_profiles().len(),
deserialized.all_profiles().len()
);
}
}