diff --git a/tests/test_regexp.rs b/tests/test_regexp.rs --- a/tests/test_regexp.rs +++ b/tests/test_regexp.rs @@ -89,6 +89,32 @@ fn test_eval_alternative_dfa() { } #[test] +fn test_eval_lambda_nfa() { + let r = Regexp::new(&String::from("a_")).unwrap(); + assert!(r.eval(String::from("a"))); + assert!(!r.eval(String::from(""))); + assert!(!r.eval(String::from("ab"))); + + let r = Regexp::new(&String::from("a|_")).unwrap(); + assert!(r.eval(String::from("a"))); + assert!(r.eval(String::from(""))); + assert!(!r.eval(String::from("b"))); +} + +#[test] +fn test_eval_lambda_dfa() { + let r = Regexp::new(&String::from("a_")).unwrap().determinize(); + assert!(r.eval(String::from("a"))); + assert!(!r.eval(String::from(""))); + assert!(!r.eval(String::from("ab"))); + + let r = Regexp::new(&String::from("a|_")).unwrap().determinize(); + assert!(r.eval(String::from("a"))); + assert!(r.eval(String::from(""))); + assert!(!r.eval(String::from("b"))); +} + +#[test] fn test_invalid_asterisk() { let x = Regexp::new(&String::from("*")); assert!(matches!(x, Err(ParsingError::Asterisk{s: _, pos: 0})));