use super::*;
#[test]
fn identity_lowers_flat_not_decomposed() {
let b = lb("me = you.");
let args = pred_args(&b, "equals").unwrap();
assert_eq!(args.len(), 2, "identity is a flat binary predicate");
assert!(!has_pred(&b, "equals_x1"), "identity must not decompose");
assert!(matches!(root(&b), LogicNode::Predicate(_)));
}
#[test]
fn raw_place_label_routes_to_named_place() {
let b = lb("goes(me, x2: you).");
assert!(role_is_const(&b, "goes_x1", "me"));
assert!(role_is_const(&b, "goes_x2", "you"));
}
#[test]
fn via_modal_is_flat_with_threaded_subject() {
let b = lb("goes(me) via makes(you).");
assert!(has_pred(&b, "goes"), "main clause decomposes");
let makes = pred_args(&b, "makes").unwrap();
assert_eq!(makes[0], LogicalTerm::Constant("you".into()));
assert_eq!(makes[1], LogicalTerm::Constant("me".into()));
}