diff --git a/src/uu/cat/src/cat.rs b/src/uu/cat/src/cat.rs index 67652e4ff..3315c2fe1 100644 --- a/src/uu/cat/src/cat.rs +++ b/src/uu/cat/src/cat.rs @@ -462,3 +462,47 @@ fn write_nonprint_to_end(in_buf: &[u8], writer: &mut W, tab: &[u8]) -> 0 } } + +mod tests { + use std::io::{BufWriter, stdout}; + + #[test] + fn test_write_nonprint_to_end_new_line() { + let mut writer = BufWriter::with_capacity(1024 * 64, stdout()); + let in_buf = b"\n"; + let tab = b""; + super::write_nonprint_to_end(in_buf, &mut writer, tab); + assert_eq!(writer.buffer().len(), 0); + } + + #[test] + fn test_write_nonprint_to_end_9() { + let mut writer = BufWriter::with_capacity(1024 * 64, stdout()); + let in_buf = &[9u8]; + let tab = b"tab"; + super::write_nonprint_to_end(in_buf, &mut writer, tab); + assert_eq!(writer.buffer(), tab); + } + + #[test] + fn test_write_nonprint_to_end_0_to_8() { + for byte in 0u8..=8u8 { + let mut writer = BufWriter::with_capacity(1024 * 64, stdout()); + let in_buf = &[byte]; + let tab = b""; + super::write_nonprint_to_end(in_buf, &mut writer, tab); + assert_eq!(writer.buffer(), [b'^', byte + 64]); + } + } + + #[test] + fn test_write_nonprint_to_end_10_to_31() { + for byte in 11u8..=31u8 { + let mut writer = BufWriter::with_capacity(1024 * 64, stdout()); + let in_buf = &[byte]; + let tab = b""; + super::write_nonprint_to_end(in_buf, &mut writer, tab); + assert_eq!(writer.buffer(), [b'^', byte + 64]); + } + } +}