* refactor: deprecate vulkan binary refactor: clean up vulkan lib chore: cleanup chore: clean up chore: clean up fix: build * fix: skip binaries download env * Update src-tauri/utils/src/system.rs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src-tauri/utils/src/system.rs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
160 lines
4.4 KiB
Rust
160 lines
4.4 KiB
Rust
use crate::commands::*;
|
|
use crate::types::CpuStaticInfo;
|
|
use tauri::test::mock_app;
|
|
|
|
#[test]
|
|
fn test_system_info() {
|
|
let info = get_system_info();
|
|
println!("System Static Info: {:?}", info);
|
|
}
|
|
|
|
#[test]
|
|
fn test_system_usage() {
|
|
let usage = get_system_usage();
|
|
println!("System Usage Info: {:?}", usage);
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod cpu_tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_cpu_static_info_new() {
|
|
let cpu_info = CpuStaticInfo::new();
|
|
|
|
// Test that all fields are populated
|
|
assert!(!cpu_info.name.is_empty());
|
|
assert_ne!(cpu_info.name, "unknown"); // Should have detected a CPU name
|
|
assert!(cpu_info.core_count > 0);
|
|
assert!(!cpu_info.arch.is_empty());
|
|
|
|
// Architecture should be one of the expected values
|
|
assert!(
|
|
cpu_info.arch == "aarch64"
|
|
|| cpu_info.arch == "arm64"
|
|
|| cpu_info.arch == "x86_64"
|
|
|| cpu_info.arch == std::env::consts::ARCH
|
|
);
|
|
|
|
// Extensions should be a valid list (can be empty on non-x86)
|
|
|
|
println!("CPU Info: {:?}", cpu_info);
|
|
}
|
|
|
|
#[test]
|
|
fn test_cpu_info_consistency() {
|
|
// Test that multiple calls return consistent information
|
|
let info1 = CpuStaticInfo::new();
|
|
let info2 = CpuStaticInfo::new();
|
|
|
|
assert_eq!(info1.name, info2.name);
|
|
assert_eq!(info1.core_count, info2.core_count);
|
|
assert_eq!(info1.arch, info2.arch);
|
|
assert_eq!(info1.extensions, info2.extensions);
|
|
}
|
|
|
|
#[test]
|
|
fn test_cpu_name_not_empty() {
|
|
let cpu_info = CpuStaticInfo::new();
|
|
assert!(!cpu_info.name.is_empty());
|
|
assert!(cpu_info.name.len() > 0);
|
|
}
|
|
|
|
#[test]
|
|
fn test_core_count_positive() {
|
|
let cpu_info = CpuStaticInfo::new();
|
|
assert!(cpu_info.core_count > 0);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
|
|
fn test_x86_extensions() {
|
|
let cpu_info = CpuStaticInfo::new();
|
|
|
|
// On x86/x86_64, we should always have at least FPU
|
|
assert!(cpu_info.extensions.contains(&"fpu".to_string()));
|
|
|
|
// Check that all extensions are valid x86 feature names
|
|
let valid_extensions = [
|
|
"fpu",
|
|
"mmx",
|
|
"sse",
|
|
"sse2",
|
|
"sse3",
|
|
"ssse3",
|
|
"sse4_1",
|
|
"sse4_2",
|
|
"pclmulqdq",
|
|
"avx",
|
|
"avx2",
|
|
"avx512_f",
|
|
"avx512_dq",
|
|
"avx512_ifma",
|
|
"avx512_pf",
|
|
"avx512_er",
|
|
"avx512_cd",
|
|
"avx512_bw",
|
|
"avx512_vl",
|
|
"avx512_vbmi",
|
|
"avx512_vbmi2",
|
|
"avx512_vnni",
|
|
"avx512_bitalg",
|
|
"avx512_vpopcntdq",
|
|
"avx512_vp2intersect",
|
|
"aes",
|
|
"f16c",
|
|
];
|
|
|
|
for ext in &cpu_info.extensions {
|
|
assert!(
|
|
valid_extensions.contains(&ext.as_str()),
|
|
"Unknown extension: {}",
|
|
ext
|
|
);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))]
|
|
fn test_non_x86_extensions() {
|
|
let cpu_info = CpuStaticInfo::new();
|
|
|
|
// On non-x86 architectures, extensions should be empty
|
|
assert!(cpu_info.extensions.is_empty());
|
|
}
|
|
|
|
#[test]
|
|
fn test_arch_detection() {
|
|
let cpu_info = CpuStaticInfo::new();
|
|
|
|
// Architecture should be a valid string
|
|
assert!(!cpu_info.arch.is_empty());
|
|
|
|
// Should be one of the common architectures
|
|
let common_archs = ["x86_64", "aarch64", "arm", "arm64", "x86"];
|
|
let is_common_arch = common_archs.iter().any(|&arch| cpu_info.arch == arch);
|
|
let is_compile_time_arch = cpu_info.arch == std::env::consts::ARCH;
|
|
|
|
assert!(
|
|
is_common_arch || is_compile_time_arch,
|
|
"Unexpected architecture: {}",
|
|
cpu_info.arch
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_cpu_info_serialization() {
|
|
let cpu_info = CpuStaticInfo::new();
|
|
|
|
// Test that the struct can be serialized (since it derives Serialize)
|
|
let serialized = serde_json::to_string(&cpu_info);
|
|
assert!(serialized.is_ok());
|
|
|
|
let json_str = serialized.unwrap();
|
|
assert!(json_str.contains("name"));
|
|
assert!(json_str.contains("core_count"));
|
|
assert!(json_str.contains("arch"));
|
|
assert!(json_str.contains("extensions"));
|
|
}
|
|
}
|