use rexile::Pattern;
#[test]
fn test_unicode_arrow() {
let input = "// Comment β Next\nrule Test";
let p = Pattern::new(r"rule\s+\w+").unwrap();
let result = p.find(input);
assert!(result.is_some(), "Should match 'rule Test'");
let (start, end) = result.unwrap();
assert_eq!(&input[start..end], "rule Test");
}
#[test]
fn test_emoji() {
let input = "π Fast rule\nrule Test {}";
let p = Pattern::new(r"rule\s+\w+").unwrap();
let result = p.find(input);
assert!(result.is_some(), "Should find at least one match");
}
#[test]
fn test_cjk_characters() {
let input = "θ§ε (rule in Chinese)\nrule Test";
let p = Pattern::new(r"rule\s+\w+").unwrap();
let result = p.find(input);
assert!(result.is_some(), "Should find a match");
}
#[test]
fn test_math_symbols() {
let input = "ββ«β β β β\nrule Test";
let p = Pattern::new(r"rule\s+\w+").unwrap();
let result = p.find(input);
assert!(result.is_some(), "Should match 'rule Test'");
let (start, end) = result.unwrap();
assert_eq!(&input[start..end], "rule Test");
}
#[test]
fn test_vietnamese_text() {
let input = "// TiαΊΏng Viα»t 123\nrule Test {}";
let p = Pattern::new(r"rule\s+\w+").unwrap();
let result = p.find(input);
assert!(result.is_some(), "Should match 'rule Test'");
let (start, end) = result.unwrap();
assert_eq!(&input[start..end], "rule Test");
}
#[test]
fn test_grl_with_unicode() {
let grl = "// Rule: Amount < 2M + COD β Auto approve\nrule \"AutoApprove\" salience 80 {}";
let p = Pattern::new(r#"rule\s+"[^"]+""#).unwrap();
let result = p.find(grl);
assert!(result.is_some(), "Should match rule with quoted name");
let (start, end) = result.unwrap();
assert_eq!(&grl[start..end], "rule \"AutoApprove\"");
}
#[test]
fn test_multiple_unicode_chars() {
let input = "π World δΈη β β test\nrule Test {}";
let p = Pattern::new(r"rule\s+\w+").unwrap();
let result = p.find(input);
assert!(result.is_some(), "Should match 'rule Test'");
let (start, end) = result.unwrap();
assert_eq!(&input[start..end], "rule Test");
}
#[test]
fn test_unicode_in_middle_of_match() {
let input = "testβabc\nrule Test";
let p = Pattern::new(r"rule\s+\w+").unwrap();
let result = p.find(input);
assert!(result.is_some());
}