let output: String = outputter.result();
// println!("Result: {} = {}", var_key.to_string(), output);
- bindings.insert(var_key.to_string(), Value::try_from(output).expect("asdfs"));
+ if var_key.to_string() != output {
+ bindings.insert(var_key.to_string(), Value::try_from(output).expect("Couldn't convert Houtput to Value"));
+ }
}
matches.push(QueryResolutionLine::Match(bindings));
);
}
+ #[test]
+ fn empty_predicate() {
+ let mut machine = Machine::new_lib();
+ machine.load_module_string(
+ "facts",
+ r#"
+ :- discontiguous(subject_class/2).
+ "#.to_string());
+
+ let result = machine.run_query(String::from(
+ "subject_class(X, _).",
+ ));
+ assert_eq!(
+ result,
+ Ok(QueryResolution::True)
+ );
+ }
+
#[test]
fn list_results() {
let mut machine = Machine::new_lib();
output,
Ok(QueryResolution::Matches(vec![QueryMatch::from(
btreemap! {
- "Predicate" => Value::from("Predicate"),
"Result" => Value::List(
Vec::from([
Value::List([Value::from("p1"), Value::from("b")].into()),
Value::List([Value::from("p2"), Value::from("b")].into()),
])
),
- "Target" => Value::from("Target"),
}
),]))
);