Files @ 9ddf4beb947b
Branch filter:

Location: Regular-Expresso/tests/test_regexp.rs

9ddf4beb947b 2.0 KiB application/rls-services+xml Show Annotation Show as Raw Download as Raw
Laman
added tests
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")));
}