pub fn is_redirect(status: u16) -> bool {
matches!(status, 301 | 302 | 303 | 307 | 308)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_is_redirect_all_codes() {
assert!(is_redirect(301)); assert!(is_redirect(302)); assert!(is_redirect(303)); assert!(is_redirect(307)); assert!(is_redirect(308)); }
#[test]
fn test_is_redirect_success_codes() {
assert!(!is_redirect(200)); assert!(!is_redirect(201)); assert!(!is_redirect(204)); }
#[test]
fn test_is_redirect_client_error_codes() {
assert!(!is_redirect(400)); assert!(!is_redirect(401)); assert!(!is_redirect(403)); assert!(!is_redirect(404)); assert!(!is_redirect(429)); }
#[test]
fn test_is_redirect_server_error_codes() {
assert!(!is_redirect(500)); assert!(!is_redirect(502)); assert!(!is_redirect(503)); assert!(!is_redirect(504)); }
#[test]
fn test_is_redirect_informational_codes() {
assert!(!is_redirect(100)); assert!(!is_redirect(101)); assert!(!is_redirect(102)); }
#[test]
fn test_is_redirect_edge_cases() {
assert!(!is_redirect(300)); assert!(!is_redirect(304)); assert!(!is_redirect(305)); assert!(!is_redirect(306)); }
#[test]
fn test_is_redirect_invalid_codes() {
assert!(!is_redirect(0));
assert!(!is_redirect(99));
assert!(!is_redirect(600));
assert!(!is_redirect(1000));
}
#[test]
fn test_is_redirect_comprehensive_coverage() {
let redirect_codes = [301, 302, 303, 307, 308];
let non_redirect_codes = [
100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 304, 305, 306,
400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
417, 418, 421, 422, 423, 424, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504,
505, 506, 507, 508, 510, 511,
];
for code in &redirect_codes {
assert!(is_redirect(*code), "Code {} should be a redirect", code);
}
for code in &non_redirect_codes {
assert!(
!is_redirect(*code),
"Code {} should NOT be a redirect",
code
);
}
}
}