From a5e7c90d0af6a0b6080f17df2910f69ef114b210 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 25 Oct 2019 08:45:44 -0400 Subject: add some tests --- src/creator.rs | 27 +++++++++++++++++++++++++++ src/frame.rs | 32 ++++++++++++++++++++++++++++++++ src/parser.rs | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+) diff --git a/src/creator.rs b/src/creator.rs index e4a377a..3966470 100644 --- a/src/creator.rs +++ b/src/creator.rs @@ -33,3 +33,30 @@ impl Default for Creator { Self { base_time: None } } } + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_basic() { + let mut creator = Creator::new(); + let base_time = std::time::Instant::now(); + assert_eq!( + creator.frame(base_time, b"").unwrap(), + vec![0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + ); + assert_eq!( + creator + .frame( + base_time + std::time::Duration::new(38, 123_456_000), + b"\x1b[2Jfoobar" + ) + .unwrap(), + vec![ + 38, 0, 0, 0, 64, 226, 1, 0, 10, 0, 0, 0, 27, 91, 50, 74, 102, + 111, 111, 98, 97, 114, + ], + ); + } +} diff --git a/src/frame.rs b/src/frame.rs index 4b72378..7558470 100644 --- a/src/frame.rs +++ b/src/frame.rs @@ -27,3 +27,35 @@ impl std::convert::TryFrom for Vec { Ok(bytes) } } + +#[cfg(test)] +mod test { + use super::*; + use std::convert::TryFrom as _; + + #[test] + fn test_basic() { + let tests = vec![ + ( + Frame { + time: std::time::Duration::new(0, 0), + data: vec![], + }, + vec![0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + ), + ( + Frame { + time: std::time::Duration::new(38, 123_456_000), + data: b"\x1b[2Jfoobar".to_vec(), + }, + vec![ + 38, 0, 0, 0, 64, 226, 1, 0, 10, 0, 0, 0, 27, 91, 50, 74, + 102, 111, 111, 98, 97, 114, + ], + ), + ]; + for (frame, bytes) in tests { + assert_eq!(Vec::::try_from(frame).unwrap(), bytes); + } + } +} diff --git a/src/parser.rs b/src/parser.rs index 2118095..d3c3861 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -88,3 +88,35 @@ impl Default for Parser { } } } + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_basic() { + let bytes = vec![ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 64, 226, 1, 0, + 10, 0, 0, 0, 27, 91, 50, 74, 102, 111, 111, 98, 97, 114, + ]; + let mut parser = Parser::new(); + for (i, c) in bytes.into_iter().enumerate() { + parser.add_bytes(&[c]); + let expected = match i { + 11 => { + let time = std::time::Duration::new(0, 0); + let data = b"".to_vec(); + Some(crate::frame::Frame { time, data }) + } + 33 => { + let time = std::time::Duration::new(38, 123_456_000); + let data = b"\x1b[2Jfoobar".to_vec(); + Some(crate::frame::Frame { time, data }) + } + _ => None, + }; + let got = parser.next_frame(); + assert_eq!(got, expected); + } + } +} -- cgit v1.2.3