#![cfg(feature = "transport-policy")]
use cow_sdk_core::TransportErrorClass;
use cow_sdk_core::transport::policy::NetworkErrorKind;
#[test]
fn network_error_kind_mapping_round_trip_is_total() {
let cases = [
(TransportErrorClass::Timeout, NetworkErrorKind::Timeout),
(TransportErrorClass::Connect, NetworkErrorKind::Connect),
(TransportErrorClass::Decode, NetworkErrorKind::Decode),
(TransportErrorClass::Body, NetworkErrorKind::Decode),
(TransportErrorClass::Status, NetworkErrorKind::HttpStatus(0)),
(TransportErrorClass::Request, NetworkErrorKind::Request),
(TransportErrorClass::Builder, NetworkErrorKind::Builder),
(
TransportErrorClass::ResponseTooLarge,
NetworkErrorKind::ResponseTooLarge,
),
(TransportErrorClass::Redirect, NetworkErrorKind::Other),
(TransportErrorClass::Upgrade, NetworkErrorKind::Other),
];
for (class, expected_kind) in cases {
let mapped = NetworkErrorKind::from_transport_error_class(class);
assert_eq!(
mapped, expected_kind,
"TransportErrorClass::{class:?} must map to {expected_kind:?}",
);
}
}
#[test]
fn response_too_large_is_never_retried() {
let policy = cow_sdk_core::transport::policy::RetryPolicy::default();
assert!(!policy.should_retry_network(NetworkErrorKind::ResponseTooLarge));
}