use probe_code::search::query::{preprocess_query, create_term_patterns};
use std::collections::HashSet;
#[test]
fn test_grouped_patterns() {
let term_pairs = vec![
("ip".to_string(), "ip".to_string()),
("whitelisting".to_string(), "whitelist".to_string()),
];
let patterns = create_term_patterns(&term_pairs);
println!("Generated patterns:");
for (pattern, indices) in &patterns {
println!("Pattern: {pattern:?}, Indices: {indices:?}");
}
assert_eq!(patterns.len(), 3);
let ip_pattern = patterns.iter().find(|(_, indices)| indices.len() == 1 && indices.contains(&0));
assert!(ip_pattern.is_some());
let (ip_pattern, _) = ip_pattern.unwrap();
assert!(ip_pattern.contains("\\bip|ip\\b"));
let whitelist_pattern = patterns.iter().find(|(_, indices)| indices.len() == 1 && indices.contains(&1));
assert!(whitelist_pattern.is_some());
let (whitelist_pattern, _) = whitelist_pattern.unwrap();
assert!(whitelist_pattern.contains("(whitelisting|whitelist)"));
let combo_pattern = patterns.iter().find(|(_, indices)| indices.len() == 2);
assert!(combo_pattern.is_some());
let (combo_pattern, _) = combo_pattern.unwrap();
assert!(combo_pattern.contains("("));
assert!(combo_pattern.contains("|"));
assert!(combo_pattern.contains("ipwhitelisting"));
assert!(combo_pattern.contains("ipwhitelist"));
}