use regexp::Regexp; #[test] fn test_eval_basic_nfa() { let r = Regexp::new(&String::from("abc")); assert!(r.eval(String::from("abc"))); assert!(!r.eval(String::from("ab"))); assert!(!r.eval(String::from("abcd"))); } #[test] fn test_eval_basic_dfa() { let r = Regexp::new(&String::from("abc")).determinize(); assert!(r.eval(String::from("abc"))); assert!(!r.eval(String::from("ab"))); assert!(!r.eval(String::from("abcd"))); } #[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(""))); } #[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"))); } #[test] fn test_eval_asterisk_nfa() { let r = Regexp::new(&String::from("a*b*")); assert!(r.eval(String::from("a"))); assert!(r.eval(String::from("ab"))); assert!(r.eval(String::from("aabb"))); assert!(!r.eval(String::from("abab"))); } #[test] fn test_eval_asterisk_dfa() { let r = Regexp::new(&String::from("a*b*")).determinize(); assert!(r.eval(String::from("a"))); assert!(r.eval(String::from("ab"))); assert!(r.eval(String::from("aabb"))); assert!(!r.eval(String::from("abab"))); } #[test] fn test_eval_plus_nfa() { let r = Regexp::new(&String::from("(ab)+")); 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_eval_plus_dfa() { let r = Regexp::new(&String::from("(ab)+")).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"))); }