use decrust_promac_runtime::backtrace::DecrustBacktrace;
use decrust_promac_runtime::types::ErrorCategory;
use decrust_promac_runtime::DecrustError;
use decrust_promac_runtime::OptionalError;
use std::io::{Error as IoError, ErrorKind};
#[test]
fn test_mars_integration() {
fn mars_error_handling() -> Result<(), DecrustError> {
Err(DecrustError::Io {
source: IoError::new(ErrorKind::NotFound, "File not found"),
path: None,
operation: "read_file".to_string(),
backtrace: DecrustBacktrace::capture(),
})
}
let result = mars_error_handling();
assert!(result.is_err());
if let Err(err) = result {
assert_eq!(err.category(), ErrorCategory::Io);
let error_message = format!("{}", err);
assert!(error_message.contains("File not found"));
}
}
#[test]
fn test_luna_ultima_integration() {
fn luna_ultima_function(input: u32) -> Result<String, DecrustError> {
if input == 0 {
return Err(DecrustError::Validation {
field: "input".to_string(),
message: "Input cannot be zero".to_string(),
expected: None,
actual: None,
rule: None,
backtrace: DecrustBacktrace::capture(),
});
}
Ok(format!("Processed: {}", input))
}
let result = luna_ultima_function(42);
assert_eq!(result, Ok("Processed: 42".to_string()));
let result = luna_ultima_function(0);
assert!(result.is_err());
if let Err(err) = result {
assert_eq!(err.category(), ErrorCategory::Validation);
if let DecrustError::Validation { field, message, .. } = err {
assert_eq!(field, "input");
assert_eq!(message, "Input cannot be zero");
} else {
panic!("Expected Validation error variant");
}
}
}
#[test]
fn test_codemaster_integration() {
fn codemaster_error_handling(input: &str) -> Result<String, DecrustError> {
if input.is_empty() {
return Err(DecrustError::Validation {
field: "input".to_string(),
message: "Input cannot be empty".to_string(),
expected: None,
actual: None,
rule: None,
backtrace: DecrustBacktrace::capture(),
});
}
if input == "network_error" {
return Err(DecrustError::Network {
source: Box::new(std::io::Error::new(
std::io::ErrorKind::ConnectionRefused,
"Connection failed",
)),
url: Some("https://test_endpoint.com".to_string()),
kind: "HTTP".to_string(),
backtrace: DecrustBacktrace::capture(),
});
}
if input == "database_error" {
return Err(DecrustError::Internal {
message: "Database connection failed".to_string(),
source: OptionalError::new(Some(Box::new(std::io::Error::new(
std::io::ErrorKind::ConnectionRefused,
"Database connection failed",
)))),
component: Some("database".to_string()),
backtrace: DecrustBacktrace::capture(),
});
}
Ok(format!("Processed: {}", input))
}
let result = codemaster_error_handling("valid_input");
assert_eq!(result, Ok("Processed: valid_input".to_string()));
let result = codemaster_error_handling("");
assert!(result.is_err());
if let Err(err) = result {
assert_eq!(err.category(), ErrorCategory::Validation);
}
let result = codemaster_error_handling("network_error");
assert!(result.is_err());
if let Err(err) = result {
assert_eq!(err.category(), ErrorCategory::Network);
}
let result = codemaster_error_handling("database_error");
assert!(result.is_err());
if let Err(err) = result {
assert_eq!(err.category(), ErrorCategory::Internal);
}
}
#[test]
fn test_tri_protocol_fusion() {
fn tri_protocol_function(input: &str) -> Result<String, DecrustError> {
if input.is_empty() {
return Err(DecrustError::Validation {
field: "input".to_string(),
message: "Input cannot be empty".to_string(),
expected: None,
actual: None,
rule: None,
backtrace: DecrustBacktrace::capture(),
});
}
let processed = format!("Processed with Tri-Protocol Fusion: {}", input);
if processed.len() > 100 {
return Err(DecrustError::Validation {
field: "processed".to_string(),
message: "Processed data too large".to_string(),
expected: None,
actual: None,
rule: None,
backtrace: DecrustBacktrace::capture(),
});
}
let optimized = processed.trim().to_string();
if optimized.contains("error") {
return Err(DecrustError::Validation {
field: "optimized".to_string(),
message: "Optimized data contains error keyword".to_string(),
expected: None,
actual: None,
rule: None,
backtrace: DecrustBacktrace::capture(),
});
}
Ok(optimized)
}
let result = tri_protocol_function("test_input");
assert_eq!(
result,
Ok("Processed with Tri-Protocol Fusion: test_input".to_string())
);
let result = tri_protocol_function("");
assert!(result.is_err());
if let Err(err) = result {
assert_eq!(err.category(), ErrorCategory::Validation);
}
let result = tri_protocol_function("error_input");
assert!(result.is_err());
if let Err(err) = result {
if let DecrustError::Validation { field, message, .. } = err {
assert_eq!(field, "optimized");
assert_eq!(message, "Optimized data contains error keyword");
} else {
panic!("Expected Validation error variant");
}
}
}