use input_macro::{input, input_fmt, read_line_expect}; use std::io::{self, BufRead, Cursor}; #[cfg(test)] #[allow(unused)] fn input_macro_usage() { input!(); input!("ABC"); input!("ABC {}", 123); } fn input_fmt_generic(src: &mut B) -> io::Result { let mut output = Vec::new(); let text = input_fmt(src, &mut output, format_args!("Prompt: ")); assert_eq!(String::from_utf8(output).unwrap(), "Prompt: "); text } #[test] fn input_fmt_lf() { let text = input_fmt_generic(&mut Cursor::new("Insert Text Here\n")); assert_eq!(text.unwrap(), "Insert Text Here"); } #[test] fn input_fmt_crlf() { let text = input_fmt_generic(&mut Cursor::new("Insert Text Here\r\n")); assert_eq!(text.unwrap(), "Insert Text Here"); } #[test] fn input_fmt_final() { let text = input_fmt_generic(&mut Cursor::new("Insert Text Here")); assert_eq!(text.unwrap(), "Insert Text Here"); } #[test] fn read_line_expect_typical() { let text = read_line_expect(&mut Cursor::new("Insert Text Here\n")); assert_eq!(text.unwrap(), "Insert Text Here"); } #[test] fn read_line_expect_eof() { let text = read_line_expect(&mut Cursor::new("")); assert_eq!(text.unwrap_err().kind(), io::ErrorKind::UnexpectedEof); }