#[cfg(test)]
mod tests {
use super::super::providers::MockTransport;
use super::super::Transport; use crate::config::Config;
use tokio;
#[tokio::test]
async fn test_mock_transport_basic_functionality() {
let mock = MockTransport::new("test-transport".to_string());
assert_eq!(mock.id, "test-transport");
assert_eq!(mock.reliability_score(), 0.95);
assert!(mock.estimated_latency().as_millis() > 0);
let capabilities = mock.get_capabilities();
assert!(capabilities.contains(&"mock".to_string()));
}
#[tokio::test]
async fn test_mock_transport_can_reach() {
let reliable_mock = MockTransport::new("reliable".to_string());
let unreliable_mock = MockTransport::new("unreliable".to_string()).with_reliability(0.3);
assert!(reliable_mock.can_reach("valid-target").await);
assert!(!reliable_mock.can_reach("").await);
assert!(!unreliable_mock.can_reach("valid-target").await);
}
#[tokio::test]
async fn test_mock_transport_metrics() {
let mock = MockTransport::new("metrics-test".to_string());
let metrics = mock.test_connectivity("test-target").await;
assert!(metrics.is_ok());
let metrics = metrics.unwrap();
assert_eq!(metrics.reliability_score, 0.95);
assert!(metrics.latency.as_millis() > 0);
assert!(metrics.throughput_bps > 0);
}
#[tokio::test]
async fn test_different_reliability_levels() {
let high_reliability = MockTransport::new("high".to_string()).with_reliability(0.99);
let medium_reliability = MockTransport::new("medium".to_string()).with_reliability(0.75);
let low_reliability = MockTransport::new("low".to_string()).with_reliability(0.25);
assert_eq!(high_reliability.reliability_score(), 0.99);
assert_eq!(medium_reliability.reliability_score(), 0.75);
assert_eq!(low_reliability.reliability_score(), 0.25);
assert!(high_reliability.can_reach("target").await);
assert!(medium_reliability.can_reach("target").await);
assert!(!low_reliability.can_reach("target").await);
}
#[tokio::test]
async fn test_transport_provider_basic_creation() {
let _config = Config::default();
let mock = MockTransport::new("di-test".to_string());
assert!(mock.can_reach("test").await);
}
}