use clap::ValueEnum;
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum, Default)]
pub enum TransportType {
#[default]
Stdio,
StreamableHTTP,
}
impl std::fmt::Display for TransportType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Stdio => write!(f, "stdio"),
Self::StreamableHTTP => write!(f, "streamable-http"),
}
}
}
#[allow(clippy::clone_on_copy)]
mod tests {
#[allow(unused_imports)]
use super::TransportType;
#[test]
fn test_transport_type_default_is_stdio() {
let transport = TransportType::default();
assert_eq!(
transport,
TransportType::Stdio,
"Default transport should be Stdio for CLI tools"
);
}
#[test]
fn test_transport_type_display_stdio() {
let transport = TransportType::Stdio;
assert_eq!(
format!("{}", transport),
"stdio",
"Stdio transport should display as 'stdio'"
);
}
#[test]
fn test_transport_type_display_streamable_http() {
let transport = TransportType::StreamableHTTP;
assert_eq!(
format!("{}", transport),
"streamable-http",
"StreamableHTTP transport should display as 'streamable-http'"
);
}
#[test]
fn test_transport_type_debug() {
let stdio = TransportType::Stdio;
let http = TransportType::StreamableHTTP;
assert!(format!("{:?}", stdio).contains("Stdio"), "Debug should contain 'Stdio'");
assert!(
format!("{:?}", http).contains("StreamableHTTP"),
"Debug should contain 'StreamableHTTP'"
);
}
#[test]
fn test_transport_type_equality() {
assert_eq!(TransportType::Stdio, TransportType::Stdio);
assert_eq!(TransportType::StreamableHTTP, TransportType::StreamableHTTP);
assert_ne!(TransportType::Stdio, TransportType::StreamableHTTP);
}
#[test]
fn test_transport_type_clone() {
let original = TransportType::Stdio;
let cloned = original.clone();
assert_eq!(original, cloned);
let original = TransportType::StreamableHTTP;
let cloned = original.clone();
assert_eq!(original, cloned);
}
#[test]
fn test_transport_type_copy() {
let original = TransportType::Stdio;
let copied = original; assert_eq!(original, copied);
let original = TransportType::StreamableHTTP;
let copied = original;
assert_eq!(original, copied);
}
}