use hypomnesis::{Snapshot, device_count, device_info, process_gpu_info};
#[test]
#[ignore = "requires NVIDIA GPU + driver"]
#[allow(clippy::expect_used)]
fn device_count_succeeds() {
let count = device_count().expect("NVIDIA GPU + driver required");
assert!(count >= 1, "expected at least one NVIDIA GPU, got {count}");
}
#[test]
#[ignore = "requires NVIDIA GPU + driver"]
#[allow(clippy::expect_used)]
fn device_info_returns_plausible_total_bytes() {
let info = device_info(0).expect("device_info(0) requires NVIDIA GPU + driver");
assert!(
info.total_bytes >= 1024 * 1024 * 1024,
"total_bytes={} (expected ≥ 1 GiB)",
info.total_bytes
);
assert!(
info.total_bytes <= 1024_u64.pow(4),
"total_bytes={} (expected ≤ 1 TiB)",
info.total_bytes
);
assert!(info.free_bytes <= info.total_bytes);
assert!(info.used_bytes <= info.total_bytes);
}
#[test]
#[ignore = "requires NVIDIA GPU + driver"]
#[allow(clippy::expect_used)]
fn snapshot_now_returns_ram_and_gpu_device() {
let snap = Snapshot::now(0).expect("Snapshot::now failed");
assert!(snap.ram_bytes > 0);
assert!(
snap.gpu_device.is_some(),
"expected gpu_device to be populated on an NVIDIA-equipped host"
);
}
#[test]
#[ignore = "requires NVIDIA GPU + driver"]
#[allow(clippy::expect_used)]
fn process_gpu_info_returns_expected_source_per_platform() {
let info = process_gpu_info(0).expect("process_gpu_info(0) requires NVIDIA GPU + driver");
#[cfg(target_os = "windows")]
{
assert_eq!(info.source, hypomnesis::GpuQuerySource::Dxgi);
assert!(info.is_per_process);
}
#[cfg(target_os = "linux")]
{
assert!(
info.source == hypomnesis::GpuQuerySource::NvidiaSmi
|| info.source == hypomnesis::GpuQuerySource::Nvml,
"expected NvidiaSmi or Nvml on Linux, got {:?}",
info.source
);
}
}
#[test]
#[ignore = "requires NVIDIA GPU + driver"]
fn out_of_range_index_yields_device_index_error() {
let result = device_info(255);
assert!(
matches!(
result,
Err(hypomnesis::HypomnesisError::DeviceIndexOutOfRange { .. })
),
"expected DeviceIndexOutOfRange, got {result:?}"
);
}