- Migrate individual modules to independent crates - Refactor dependencies for improved modularity - Update build system and testing infrastructure - Update documentation to reflect new structure
206 lines
6.1 KiB
Rust
206 lines
6.1 KiB
Rust
use sal_os::platform;
|
|
|
|
#[test]
|
|
fn test_platform_detection_consistency() {
|
|
// Test that platform detection functions return consistent results
|
|
let is_osx = platform::is_osx();
|
|
let is_linux = platform::is_linux();
|
|
|
|
// On any given system, only one of these should be true
|
|
// (or both false if running on Windows or other OS)
|
|
if is_osx {
|
|
assert!(!is_linux, "Cannot be both macOS and Linux");
|
|
}
|
|
if is_linux {
|
|
assert!(!is_osx, "Cannot be both Linux and macOS");
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_architecture_detection_consistency() {
|
|
// Test that architecture detection functions return consistent results
|
|
let is_arm = platform::is_arm();
|
|
let is_x86 = platform::is_x86();
|
|
|
|
// On any given system, only one of these should be true
|
|
// (or both false if running on other architectures)
|
|
if is_arm {
|
|
assert!(!is_x86, "Cannot be both ARM and x86");
|
|
}
|
|
if is_x86 {
|
|
assert!(!is_arm, "Cannot be both x86 and ARM");
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_platform_functions_return_bool() {
|
|
// Test that all platform detection functions return boolean values
|
|
let _: bool = platform::is_osx();
|
|
let _: bool = platform::is_linux();
|
|
let _: bool = platform::is_arm();
|
|
let _: bool = platform::is_x86();
|
|
}
|
|
|
|
#[cfg(target_os = "macos")]
|
|
#[test]
|
|
fn test_macos_detection() {
|
|
// When compiled for macOS, is_osx should return true
|
|
assert!(platform::is_osx());
|
|
assert!(!platform::is_linux());
|
|
}
|
|
|
|
#[cfg(target_os = "linux")]
|
|
#[test]
|
|
fn test_linux_detection() {
|
|
// When compiled for Linux, is_linux should return true
|
|
assert!(platform::is_linux());
|
|
assert!(!platform::is_osx());
|
|
}
|
|
|
|
#[cfg(target_arch = "aarch64")]
|
|
#[test]
|
|
fn test_arm_detection() {
|
|
// When compiled for ARM64, is_arm should return true
|
|
assert!(platform::is_arm());
|
|
assert!(!platform::is_x86());
|
|
}
|
|
|
|
#[cfg(target_arch = "x86_64")]
|
|
#[test]
|
|
fn test_x86_detection() {
|
|
// When compiled for x86_64, is_x86 should return true
|
|
assert!(platform::is_x86());
|
|
assert!(!platform::is_arm());
|
|
}
|
|
|
|
#[test]
|
|
fn test_check_linux_x86() {
|
|
let result = platform::check_linux_x86();
|
|
|
|
// The result should depend on the current platform
|
|
#[cfg(all(target_os = "linux", target_arch = "x86_64"))]
|
|
{
|
|
assert!(result.is_ok(), "Should succeed on Linux x86_64");
|
|
}
|
|
|
|
#[cfg(not(all(target_os = "linux", target_arch = "x86_64")))]
|
|
{
|
|
assert!(result.is_err(), "Should fail on non-Linux x86_64 platforms");
|
|
|
|
// Check that the error message is meaningful
|
|
let error = result.unwrap_err();
|
|
let error_string = error.to_string();
|
|
assert!(
|
|
error_string.contains("Linux x86_64"),
|
|
"Error message should mention Linux x86_64: {}",
|
|
error_string
|
|
);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_check_macos_arm() {
|
|
let result = platform::check_macos_arm();
|
|
|
|
// The result should depend on the current platform
|
|
#[cfg(all(target_os = "macos", target_arch = "aarch64"))]
|
|
{
|
|
assert!(result.is_ok(), "Should succeed on macOS ARM");
|
|
}
|
|
|
|
#[cfg(not(all(target_os = "macos", target_arch = "aarch64")))]
|
|
{
|
|
assert!(result.is_err(), "Should fail on non-macOS ARM platforms");
|
|
|
|
// Check that the error message is meaningful
|
|
let error = result.unwrap_err();
|
|
let error_string = error.to_string();
|
|
assert!(
|
|
error_string.contains("macOS ARM"),
|
|
"Error message should mention macOS ARM: {}",
|
|
error_string
|
|
);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_platform_error_creation() {
|
|
use sal_os::platform::PlatformError;
|
|
|
|
// Test that we can create platform errors
|
|
let error = PlatformError::new("Test Error", "This is a test error message");
|
|
let error_string = error.to_string();
|
|
|
|
assert!(error_string.contains("Test Error"));
|
|
assert!(error_string.contains("This is a test error message"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_platform_error_display() {
|
|
use sal_os::platform::PlatformError;
|
|
|
|
// Test error display formatting
|
|
let error = PlatformError::Generic("Category".to_string(), "Message".to_string());
|
|
let error_string = format!("{}", error);
|
|
|
|
assert!(error_string.contains("Category"));
|
|
assert!(error_string.contains("Message"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_platform_error_debug() {
|
|
use sal_os::platform::PlatformError;
|
|
|
|
// Test error debug formatting
|
|
let error = PlatformError::Generic("Category".to_string(), "Message".to_string());
|
|
let debug_string = format!("{:?}", error);
|
|
|
|
assert!(debug_string.contains("Generic"));
|
|
assert!(debug_string.contains("Category"));
|
|
assert!(debug_string.contains("Message"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_platform_functions_are_deterministic() {
|
|
// Platform detection should be deterministic - same result every time
|
|
let osx1 = platform::is_osx();
|
|
let osx2 = platform::is_osx();
|
|
assert_eq!(osx1, osx2);
|
|
|
|
let linux1 = platform::is_linux();
|
|
let linux2 = platform::is_linux();
|
|
assert_eq!(linux1, linux2);
|
|
|
|
let arm1 = platform::is_arm();
|
|
let arm2 = platform::is_arm();
|
|
assert_eq!(arm1, arm2);
|
|
|
|
let x86_1 = platform::is_x86();
|
|
let x86_2 = platform::is_x86();
|
|
assert_eq!(x86_1, x86_2);
|
|
}
|
|
|
|
#[test]
|
|
fn test_platform_check_functions_consistency() {
|
|
// The check functions should be consistent with the individual detection functions
|
|
let is_linux_x86 = platform::is_linux() && platform::is_x86();
|
|
let check_linux_x86_result = platform::check_linux_x86().is_ok();
|
|
assert_eq!(is_linux_x86, check_linux_x86_result);
|
|
|
|
let is_macos_arm = platform::is_osx() && platform::is_arm();
|
|
let check_macos_arm_result = platform::check_macos_arm().is_ok();
|
|
assert_eq!(is_macos_arm, check_macos_arm_result);
|
|
}
|
|
|
|
#[test]
|
|
fn test_current_platform_info() {
|
|
// Print current platform info for debugging (this will show in test output with --nocapture)
|
|
println!("Current platform detection:");
|
|
println!(" is_osx(): {}", platform::is_osx());
|
|
println!(" is_linux(): {}", platform::is_linux());
|
|
println!(" is_arm(): {}", platform::is_arm());
|
|
println!(" is_x86(): {}", platform::is_x86());
|
|
println!(" check_linux_x86(): {:?}", platform::check_linux_x86());
|
|
println!(" check_macos_arm(): {:?}", platform::check_macos_arm());
|
|
}
|