From 8dd86b6da33887ae46a4e0e0a656698bf7dc75f2 Mon Sep 17 00:00:00 2001 From: David Bittner Date: Mon, 6 May 2019 16:37:03 -0400 Subject: [PATCH] adding testing macro --- src/enums.rs | 10 ++++++++ src/parsers/tests.rs | 61 +++++++++++++++----------------------------- 2 files changed, 31 insertions(+), 40 deletions(-) diff --git a/src/enums.rs b/src/enums.rs index c0a6310..9fc6da8 100644 --- a/src/enums.rs +++ b/src/enums.rs @@ -131,3 +131,13 @@ pub enum Output<'a> { TextBlock(&'a str), Escape(AnsiSequence) } + +impl<'a> Display for Output<'a> { + fn fmt(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + use Output::*; + match self { + TextBlock(txt) => write!(formatter, "{}", txt), + Escape(seq) => write!(formatter, "{}", seq) + } + } +} diff --git a/src/parsers/tests.rs b/src/parsers/tests.rs index 2d6c0df..b98f3d1 100644 --- a/src/parsers/tests.rs +++ b/src/parsers/tests.rs @@ -1,49 +1,30 @@ use super::*; +use std::fmt::Write; macro_rules! test_parser { - ($func:expr, $string:expr) => ($func($string)); + ($name:ident, $string:expr) => { + #[test] + fn $name() { + let mut buff = String::new(); + let ret = parse_escape($string); + + println!("{:#?}", ret); + assert!(ret.is_ok()); + let ret = ret.unwrap().1; + + write!(&mut buff, "{}", ret) + .unwrap(); + + assert_eq!(buff, $string); + } + } } -#[test] -fn test_invalid_escapes() { - let parse = "4;31;1;5m"; - let temp = parse_escape(parse); +test_parser!(set_video_mode_a, "\u{1b}[4;31;42m"); +test_parser!(set_video_mode_b, "\u{1b}[4m"); - assert!(!temp.is_ok()); -} - -#[test] -fn test_graphics_mode() { - let temp = test_parser!(graphics_mode, "4;31;42m"); - - assert!(temp.is_ok()); - assert_eq!(AnsiSequence::SetGraphicsMode( - vec![4,31,42] - ), - temp.unwrap().1 - ); - - let temp = test_parser!(graphics_mode, "4m"); - - assert!(temp.is_ok()); - assert_eq!(AnsiSequence::SetGraphicsMode(vec![4]), - temp.unwrap().1 - ); -} - -#[test] -fn test_set_mode() { - let temp = test_parser!(set_mode, "=7h"); - assert_eq!(AnsiSequence::SetMode(7), temp.unwrap().1); -} - -#[test] -fn test_reset_mode() { - let parse = "=13l"; - let temp = reset_mode(parse); - - assert_eq!(AnsiSequence::ResetMode(13), temp.unwrap().1); -} +test_parser!(reset_mode, "\u{1b}[=13l"); +test_parser!(set_mode, "\u{1b}[=7h"); #[test] fn test_parser_iterator() {