use netspeed_cli::config::Config;
use netspeed_cli::orchestrator::Orchestrator;
use netspeed_cli::{
http_client::ReqwestClient, output_strategy, phase_runner::DefaultPhaseRunner,
result_processor::DefaultResultProcessor,
};
#[tokio::test]
async fn test_http_client_impl() {
let config = Config::default();
let settings = netspeed_cli::http::Settings::from(&config);
let client = netspeed_cli::http::create_client(&settings).expect("client creation");
let wrapper = ReqwestClient(client.clone());
let resp = wrapper
.get("https://example.com")
.await
.expect("GET succeeds");
assert!(resp.status().is_success());
}
#[tokio::test]
async fn test_phase_runner_delegate() {
let args = netspeed_cli::cli::Args::default();
let orch = Orchestrator::new(args, None).expect("orchestrator");
let runner = DefaultPhaseRunner::new();
let result = runner.run_all(&orch).await;
assert!(result.is_ok() || result.is_err());
}
#[test]
fn test_result_processor_defaults() {
let mut result = netspeed_cli::types::TestResult::default();
let profile = netspeed_cli::profiles::UserProfile::PowerUser;
let processor = DefaultResultProcessor;
processor.process(&mut result, profile);
assert!(result.overall_grade.is_none()); }
#[test]
fn test_output_strategy_resolver() {
let config = Config::default();
let dummy_dl = netspeed_cli::task_runner::TestRunResult {
avg_bps: 0.0,
peak_bps: 0.0,
total_bytes: 0,
duration_secs: 0.0,
speed_samples: vec![],
latency_under_load: None,
};
let dummy_ul = dummy_dl.clone();
let format = output_strategy::resolve_output_format(
&config,
&dummy_dl,
&dummy_ul,
std::time::Duration::from_secs(0),
);
let result = netspeed_cli::types::TestResult::default();
let res = format.format(&result, false);
assert!(res.is_ok() || res.is_err());
}