use helios_fhirpath::{EvaluationContext, evaluate_expression};
#[test]
fn debug_inequality_operators() {
let observation_json = serde_json::json!({
"resourceType": "Observation",
"id": "o1",
"valueInteger": 12
});
let observation: helios_fhir::r4::Observation =
serde_json::from_value(observation_json).expect("Failed to parse observation");
let context = EvaluationContext::new(vec![helios_fhir::FhirResource::R4(Box::new(
helios_fhir::r4::Resource::Observation(Box::new(observation)),
))]);
println!("Testing comparison operators with Observation (valueInteger: 12)");
test_expression("valueInteger", &context);
test_expression("value", &context);
test_expression("value.ofType(integer)", &context);
test_expression("value.ofType(Integer)", &context); test_expression("value.ofType(System.Integer)", &context); test_expression("value.ofType(FHIR.integer)", &context); test_expression("value.is(integer)", &context); test_expression("value.is(Integer)", &context); test_expression("valueInteger > 11", &context);
test_expression("value.ofType(integer) > 11", &context);
test_expression("where(valueInteger > 11)", &context);
test_expression("where(value.ofType(integer) > 11)", &context);
test_expression("where(value.ofType(integer) > 11).exists()", &context);
test_expression("where(valueInteger < 11)", &context);
test_expression("where(value.ofType(integer) < 11)", &context);
test_expression("where(value.ofType(integer) < 11).exists()", &context);
}
fn test_expression(expr_str: &str, context: &EvaluationContext) {
println!("\nTesting: {}", expr_str);
match evaluate_expression(expr_str, context) {
Ok(result) => {
println!(" Result: {:?}", result);
}
Err(e) => {
println!(" Error: {}", e);
}
}
}