use super::*;
#[cfg(not(feature = "std"))]
use alloc::{format, vec, vec::Vec};
#[test]
fn decode_uu_data_empty_input() {
let lines: Vec<&str> = vec![];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded, Vec::<u8>::new());
}
#[test]
fn decode_uu_data_known_encoding() {
let lines = ["#0V%T"];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded, b"Cat");
}
#[test]
fn decode_uu_data_known_encoding_png() {
let lines = ["#4$Y'"];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded, b"PNG");
}
#[test]
fn decode_uu_data_multiline() {
let lines = ["#0V%T", "#0V%T"];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded, b"CatCat");
}
#[test]
fn decode_uu_data_with_end_marker() {
let lines = ["#0V%T", "end"];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded, b"Cat");
}
#[test]
fn decode_uu_data_with_end_marker_spaced() {
let lines = ["#0V%T", "end 644"];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded, b"Cat");
}
#[test]
fn decode_uu_data_zero_length_line() {
let lines = ["#0V%T", " "];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded, b"Cat");
}
#[test]
fn decode_uu_data_whitespace_lines() {
let lines = [" #0V%T ", "\t", ""];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded, b"Cat");
}
#[test]
fn decode_uu_data_length_validation() {
let lines = ["! "]; let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded.len(), 1); }
#[test]
fn decode_uu_data_partial_chunks() {
let lines = ["\"``"]; let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded.len(), 2); }
#[test]
fn decode_uu_data_large_line() {
let line = format!("M{}", "!!!!".repeat(15)); let lines = [line.as_str()];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded.len(), 45);
}
#[test]
fn decode_uu_data_mixed_content() {
let lines = [
"begin 644 test.txt", "#0V%T", "| comment", "#4$Y'", "end", ];
let decoded = decode_uu_data(lines.iter().copied()).unwrap();
assert_eq!(decoded, b"CatPNG");
}
#[test]
fn decode_uu_data_all_printable_chars() {
let lines = ["@ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"];
let _decoded = decode_uu_data(lines.iter().copied()).unwrap();
}
#[test]
fn decode_uu_data_boundary_lengths() {
let single_byte = ["! "]; let two_bytes = ["\"`` "]; let three_bytes = ["#```"];
let decoded1 = decode_uu_data(single_byte.iter().copied()).unwrap();
assert_eq!(decoded1.len(), 1);
let decoded2 = decode_uu_data(two_bytes.iter().copied()).unwrap();
assert_eq!(decoded2.len(), 2);
let decoded3 = decode_uu_data(three_bytes.iter().copied()).unwrap();
assert_eq!(decoded3.len(), 3);
}
#[test]
fn decode_uu_data_handles_invalid_gracefully() {
let lines = ["#\x01\x02\x03"]; let _result = decode_uu_data(lines.iter().copied());
}
#[test]
fn decode_uu_data_error_conditions() {
let invalid_lines = ["invalid", "also invalid", "still invalid"];
let result = decode_uu_data(invalid_lines.iter().copied()).unwrap();
assert!(result.is_empty());
let malformed_length = ["\x7F!!!!"]; let _result = decode_uu_data(malformed_length.iter().copied());
let short_lines = ["!"]; let result = decode_uu_data(short_lines.iter().copied()).unwrap();
assert!(result.is_empty() || result.len() <= 1);
let unicode_lines = ["#ðŸŽðŸŽðŸŽ"];
let _result = decode_uu_data(unicode_lines.iter().copied());
}