use super::Rb; use crate::{storage::Array, traits::*}; use core::fmt::Write; #[test] fn write() { let mut rb = Rb::>::default(); let (mut prod, cons) = rb.split_ref(); assert_eq!(write!(prod, "Hello world!\n"), Ok(())); assert_eq!(write!(prod, "The answer is {}\n", 42), Ok(())); assert_eq!(cons.occupied_len(), 30); assert!(cons.into_iter().eq(b"Hello world!\nThe answer is 42\n".iter().copied())); } #[test] fn write_overflow() { let mut rb = Rb::>::default(); let (mut prod, mut cons) = rb.split_ref(); assert_eq!( write!(prod, "This is a very long string that will overflow the small buffer\n"), Err(core::fmt::Error) ); assert_eq!(cons.occupied_len(), 10); assert!(cons.pop_iter().eq(b"This is a ".iter().copied())); assert_eq!( write!(prod, "{} {} {} {} {}\n", "This", "string", "will", "also", "overflow"), Err(core::fmt::Error) ); assert_eq!(cons.occupied_len(), 10); assert!(cons.pop_iter().eq(b"This strin".iter().copied())); }