From e7cf81e813dd5ee0ba5af9d5ad4354351da95b2d Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 27 Oct 2019 07:29:38 -0400 Subject: split frame into frame and frame_at keep the api easy to use while still letting it be testable --- src/creator.rs | 10 +++++++--- src/writer.rs | 8 ++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/creator.rs b/src/creator.rs index 666ffc7..fb228dd 100644 --- a/src/creator.rs +++ b/src/creator.rs @@ -8,7 +8,11 @@ impl Creator { Default::default() } - pub fn frame( + pub fn frame(&mut self, data: &[u8]) -> crate::frame::Frame { + self.frame_at(std::time::Instant::now(), data) + } + + pub fn frame_at( &mut self, cur_time: std::time::Instant, data: &[u8], @@ -42,12 +46,12 @@ mod test { let base_time = std::time::Instant::now(); let zero_frame: Vec = - std::convert::TryFrom::try_from(creator.frame(base_time, b"")) + std::convert::TryFrom::try_from(creator.frame_at(base_time, b"")) .unwrap(); assert_eq!(zero_frame, vec![0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); let data_frame: Vec = - std::convert::TryFrom::try_from(creator.frame( + std::convert::TryFrom::try_from(creator.frame_at( base_time + std::time::Duration::new(38, 123_456_000), b"\x1b[2Jfoobar", )) diff --git a/src/writer.rs b/src/writer.rs index 680da3d..270acb0 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -15,12 +15,16 @@ impl Writer { } } - pub fn frame( + pub fn frame(&mut self, data: &[u8]) -> crate::error::Result<()> { + self.frame_at(std::time::Instant::now(), data) + } + + pub fn frame_at( &mut self, time: std::time::Instant, data: &[u8], ) -> crate::error::Result<()> { - let frame = self.creator.frame(time, data); + let frame = self.creator.frame_at(time, data); let bytes: Vec = std::convert::TryFrom::try_from(frame)?; self.to_write.extend(bytes.iter()); Ok(()) -- cgit v1.2.3-54-g00ecf