Files
rustytorch/demos/rtx-risk-analyzer/src/error.rs
T
2026-03-04 00:08:42 +00:00

77 lines
2.2 KiB
Rust

//! Error types for risk analyzer
use thiserror::Error;
/// Result type for risk analyzer operations
pub type Result<T> = std::result::Result<T, RiskAnalyzerError>;
/// Error types for risk analysis operations
#[derive(Debug, Error)]
pub enum RiskAnalyzerError {
/// Invalid configuration parameter
#[error("Invalid configuration: {0}")]
InvalidConfig(String),
/// Insufficient data for analysis
#[error("Insufficient data: {0}")]
InsufficientData(String),
/// Calculation error
#[error("Calculation error: {0}")]
CalculationError(String),
/// Invalid portfolio weights
#[error("Invalid portfolio weights: {0}")]
InvalidWeights(String),
/// Matrix operation error
#[error("Matrix operation failed: {0}")]
MatrixError(String),
/// Serialization error
#[error("Serialization error: {0}")]
SerializationError(#[from] serde_json::Error),
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_invalid_config_error() {
let error = RiskAnalyzerError::InvalidConfig("test error".to_string());
assert!(error.to_string().contains("Invalid configuration"));
assert!(error.to_string().contains("test error"));
}
#[test]
fn test_insufficient_data_error() {
let error = RiskAnalyzerError::InsufficientData("need more data".to_string());
assert!(error.to_string().contains("Insufficient data"));
}
#[test]
fn test_calculation_error() {
let error = RiskAnalyzerError::CalculationError("division by zero".to_string());
assert!(error.to_string().contains("Calculation error"));
}
#[test]
fn test_invalid_weights_error() {
let error = RiskAnalyzerError::InvalidWeights("weights don't sum to 1".to_string());
assert!(error.to_string().contains("Invalid portfolio weights"));
}
#[test]
fn test_matrix_error() {
let error = RiskAnalyzerError::MatrixError("singular matrix".to_string());
assert!(error.to_string().contains("Matrix operation failed"));
}
#[test]
fn test_error_is_send_sync() {
fn assert_send_sync<T: Send + Sync>() {}
assert_send_sync::<RiskAnalyzerError>();
}
}