use std::io::{self, ErrorKind};
use super::{WriteOutcome, classify};
#[test]
fn classify_passes_success_through() {
assert!(matches!(classify(Ok(())), WriteOutcome::Ok));
}
#[test]
fn classify_recognizes_a_broken_pipe_specifically() {
let err = io::Error::from(ErrorKind::BrokenPipe);
assert!(matches!(classify(Err(err)), WriteOutcome::ClosedPipe));
}
#[test]
fn classify_does_not_treat_other_errors_as_a_closed_pipe() {
for kind in [
ErrorKind::StorageFull,
ErrorKind::PermissionDenied,
ErrorKind::Interrupted,
ErrorKind::WriteZero,
] {
let err = io::Error::from(kind);
assert!(
matches!(classify(Err(err)), WriteOutcome::Failed(_)),
"{kind:?} must not be classified as a closed pipe"
);
}
}