pub(super) use super::support::{
build_workspace, cli_mcp_config, compute_touchpoints_for, empty_cfg_test, ports_app_cli_mcp,
three_layer,
};
pub(super) use std::collections::HashSet;
mod anchor_membership;
mod sets;
pub(super) type WsFiles = &'static [(&'static str, &'static str)];
pub(super) type TouchpointCase = (
&'static str,
WsFiles,
usize,
&'static str,
&'static [&'static str],
);
pub(super) type ContainsCase = (&'static str, WsFiles, &'static str, &'static str, bool);
pub(super) fn assert_set(actual: HashSet<String>, expected: &[&str]) {
let expected_set: HashSet<String> = expected.iter().map(|s| s.to_string()).collect();
assert_eq!(
actual, expected_set,
"touchpoint set mismatch — actual={actual:?} expected={expected_set:?}"
);
}
pub(super) fn tp_3l(files: WsFiles, depth: usize, handler: &str) -> HashSet<String> {
compute_touchpoints_for(
&build_workspace(files),
&three_layer(),
&cli_mcp_config(depth),
handler,
&empty_cfg_test(),
)
}
pub(super) fn tp_ports(files: WsFiles, handler: &str) -> HashSet<String> {
compute_touchpoints_for(
&build_workspace(files),
&ports_app_cli_mcp(),
&cli_mcp_config(3),
handler,
&empty_cfg_test(),
)
}