use vyre_primitives::graph::alias_registry::{
register_alias_ops as primitive_register, AliasOpDescriptor, AliasRegistry, ALIAS_UNION_OP_ID,
};
#[must_use]
pub fn build_default_registry() -> AliasRegistry {
use crate::observability::{bump, dataflow_fixpoint_calls};
bump(&dataflow_fixpoint_calls);
let mut registry = AliasRegistry::default();
primitive_register(&mut registry);
registry
}
#[must_use]
pub fn lookup_alias_op<'a>(
registry: &'a AliasRegistry,
op_id: &str,
) -> Option<&'a AliasOpDescriptor> {
use crate::observability::{bump, dataflow_fixpoint_calls};
bump(&dataflow_fixpoint_calls);
registry.get(op_id)
}
#[must_use]
pub fn alias_union_registered(registry: &AliasRegistry) -> bool {
lookup_alias_op(registry, ALIAS_UNION_OP_ID).is_some()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_registry_has_alias_union() {
let registry = build_default_registry();
assert!(alias_union_registered(®istry));
}
#[test]
fn empty_registry_has_no_ops() {
let registry = AliasRegistry::default();
assert!(registry.is_empty());
assert!(!alias_union_registered(®istry));
}
#[test]
fn lookup_unknown_op_returns_none() {
let registry = build_default_registry();
assert!(lookup_alias_op(®istry, "vyre.graph.does_not_exist").is_none());
}
#[test]
fn matches_primitive_directly() {
let via_substrate = build_default_registry();
let mut via_primitive = AliasRegistry::default();
primitive_register(&mut via_primitive);
assert_eq!(via_substrate.len(), via_primitive.len());
assert!(via_substrate.get(ALIAS_UNION_OP_ID).is_some());
assert!(via_primitive.get(ALIAS_UNION_OP_ID).is_some());
}
#[test]
fn empty_registry_does_not_self_populate() {
let registry = AliasRegistry::default();
assert!(lookup_alias_op(®istry, ALIAS_UNION_OP_ID).is_none());
}
#[test]
fn alias_union_descriptor_contract() {
let registry = build_default_registry();
let desc = lookup_alias_op(®istry, ALIAS_UNION_OP_ID).unwrap();
assert!(desc.commutative, "alias-union must be commutative");
assert!(desc.side_effects, "alias-union must declare side effects");
}
}