#[macro_export]
macro_rules! kxprintln {
($printer:expr, $($arg:tt)*) => {{
$crate::print::Print::println_fmt(&$printer.clone(), format_args!($($arg)*))
}};
}
#[macro_export]
macro_rules! kxprint {
($printer:expr, $($arg:tt)*) => {{
$crate::print::Print::print_fmt(&$printer.clone(), format_args!($($arg)*))
}};
}
#[macro_export]
macro_rules! kxeprintln {
($printer:expr, $($arg:tt)*) => {{
$crate::print::Print::eprintln_fmt(&$printer.clone(), format_args!($($arg)*))
}};
}
#[macro_export]
macro_rules! kxeprint {
($printer:expr, $($arg:tt)*) => {{
$crate::print::Print::eprint_fmt(&$printer.clone(), format_args!($($arg)*))
}};
}
#[cfg(test)]
mod tests {
use super::super::TestPrint;
#[test]
fn test_macro_with_ref_and_owned() {
let printer = TestPrint::new();
kxprintln!(&printer, "ref test");
assert_eq!(printer.output(), "ref test\n");
printer.clear();
kxprintln!(printer, "owned test");
assert_eq!(printer.output(), "owned test\n");
}
#[test]
fn test_kxprint_macro() {
let printer = TestPrint::new();
kxprint!(printer, "Hello {}", "world");
assert_eq!(printer.output(), "Hello world");
}
#[test]
fn test_kxprintln_macro() {
let printer = TestPrint::new();
kxprintln!(printer, "Hello {}", "world");
assert_eq!(printer.output(), "Hello world\n");
}
#[test]
fn test_kxeprint_macro() {
let printer = TestPrint::new();
kxeprint!(printer, "Error: {}", "file not found");
assert_eq!(printer.stderr(), "Error: file not found");
}
#[test]
fn test_kxeprintln_macro() {
let printer = TestPrint::new();
kxeprintln!(printer, "Error: {}", "permission denied");
assert_eq!(printer.stderr(), "Error: permission denied\n");
}
}