diff --git a/tests/test_regexp.rs b/tests/test_regexp.rs --- a/tests/test_regexp.rs +++ b/tests/test_regexp.rs @@ -1,8 +1,9 @@ use regexp::Regexp; +use regexp::ParsingError; #[test] fn test_eval_basic_nfa() { - let r = Regexp::new(&String::from("abc")); + let r = Regexp::new(&String::from("abc")).unwrap(); assert!(r.eval(String::from("abc"))); assert!(!r.eval(String::from("ab"))); assert!(!r.eval(String::from("abcd"))); @@ -10,7 +11,7 @@ fn test_eval_basic_nfa() { #[test] fn test_eval_basic_dfa() { - let r = Regexp::new(&String::from("abc")).determinize(); + let r = Regexp::new(&String::from("abc")).unwrap().determinize(); assert!(r.eval(String::from("abc"))); assert!(!r.eval(String::from("ab"))); assert!(!r.eval(String::from("abcd"))); @@ -18,22 +19,22 @@ fn test_eval_basic_dfa() { #[test] fn test_eval_empty_nfa() { - assert!(Regexp::new(&String::from("a*")).eval(String::from(""))); - assert!(Regexp::new(&String::from("")).eval(String::from(""))); - assert!(!Regexp::new(&String::from("")).eval(String::from("a"))); - assert!(!Regexp::new(&String::from("a")).eval(String::from(""))); + assert!(Regexp::new(&String::from("a*")).unwrap().eval(String::from(""))); + assert!(Regexp::new(&String::from("")).unwrap().eval(String::from(""))); + assert!(!Regexp::new(&String::from("")).unwrap().eval(String::from("a"))); + assert!(!Regexp::new(&String::from("a")).unwrap().eval(String::from(""))); } #[test] fn test_eval_empty_dfa() { - assert!(Regexp::new(&String::from("a*")).determinize().eval(String::from(""))); - assert!(Regexp::new(&String::from("")).determinize().eval(String::from(""))); - assert!(!Regexp::new(&String::from("")).determinize().eval(String::from("a"))); + assert!(Regexp::new(&String::from("a*")).unwrap().determinize().eval(String::from(""))); + assert!(Regexp::new(&String::from("")).unwrap().determinize().eval(String::from(""))); + assert!(!Regexp::new(&String::from("")).unwrap().determinize().eval(String::from("a"))); } #[test] fn test_eval_asterisk_nfa() { - let r = Regexp::new(&String::from("a*b*")); + let r = Regexp::new(&String::from("a*b*")).unwrap(); assert!(r.eval(String::from("a"))); assert!(r.eval(String::from("ab"))); assert!(r.eval(String::from("aabb"))); @@ -42,7 +43,7 @@ fn test_eval_asterisk_nfa() { #[test] fn test_eval_asterisk_dfa() { - let r = Regexp::new(&String::from("a*b*")).determinize(); + let r = Regexp::new(&String::from("a*b*")).unwrap().determinize(); assert!(r.eval(String::from("a"))); assert!(r.eval(String::from("ab"))); assert!(r.eval(String::from("aabb"))); @@ -51,7 +52,7 @@ fn test_eval_asterisk_dfa() { #[test] fn test_eval_plus_nfa() { - let r = Regexp::new(&String::from("(ab)+")); + let r = Regexp::new(&String::from("(ab)+")).unwrap(); assert!(!r.eval(String::from("a"))); assert!(r.eval(String::from("ab"))); assert!(r.eval(String::from("abab"))); @@ -60,9 +61,33 @@ fn test_eval_plus_nfa() { #[test] fn test_eval_plus_dfa() { - let r = Regexp::new(&String::from("(ab)+")).determinize(); + let r = Regexp::new(&String::from("(ab)+")).unwrap().determinize(); assert!(!r.eval(String::from("a"))); assert!(r.eval(String::from("ab"))); assert!(r.eval(String::from("abab"))); assert!(!r.eval(String::from("aabb"))); } + +#[test] +fn test_invalid_asterisk() { + let x = Regexp::new(&String::from("*")); + assert!(matches!(x, Err(ParsingError::Asterisk{s: _, pos: 0}))); +} + +#[test] +fn test_invalid_plus() { + let x = Regexp::new(&String::from("+")); + assert!(matches!(x, Err(ParsingError::Plus{s: _, pos: 0}))); +} + +#[test] +fn test_invalid_closing_parenthesis() { + let x = Regexp::new(&String::from("(a")); + assert!(matches!(x, Err(ParsingError::ClosingParenthesis{s: _, pos: 0}))); +} + +#[test] +fn test_invalid_opening_parenthesis() { + let x = Regexp::new(&String::from("a)")); + assert!(matches!(x, Err(ParsingError::OpeningParenthesis{s: _, pos: 1}))); +}