aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-10-25 08:45:44 -0400
committerJesse Luehrs <doy@tozt.net>2019-10-25 08:45:44 -0400
commita5e7c90d0af6a0b6080f17df2910f69ef114b210 (patch)
tree08bd9578847e77c3aa34eec2e6ad45238759719a
parent37e6d9c37b2d8e49103ef61f0127bc8b15a51530 (diff)
downloadttyrec-a5e7c90d0af6a0b6080f17df2910f69ef114b210.tar.gz
ttyrec-a5e7c90d0af6a0b6080f17df2910f69ef114b210.zip
add some tests
-rw-r--r--src/creator.rs27
-rw-r--r--src/frame.rs32
-rw-r--r--src/parser.rs32
3 files changed, 91 insertions, 0 deletions
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<Frame> for Vec<u8> {
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::<u8>::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);
+ }
+ }
+}