in crates/core/src/expr/filter.rs [312:344]
fn test_schemable_filter_all_operators() -> Result<()> {
let schema = create_test_schema();
let test_array = Int64Array::from(vec![40, 50, 60]);
let test_cases = vec![
(ExprOperator::Eq, "50", vec![false, true, false]),
(ExprOperator::Ne, "50", vec![true, false, true]),
(ExprOperator::Lt, "50", vec![true, false, false]),
(ExprOperator::Lte, "50", vec![true, true, false]),
(ExprOperator::Gt, "50", vec![false, false, true]),
(ExprOperator::Gte, "50", vec![false, true, true]),
];
for (operator, value, expected) in test_cases {
let filter = Filter {
field_name: "int_col".to_string(),
operator,
field_value: value.to_string(),
};
let schemable = SchemableFilter::try_from((filter, &schema))?;
let result = schemable.apply_comparsion(&test_array)?;
assert_eq!(
result,
BooleanArray::from(expected),
"Failed for operator {:?} with value {}",
operator,
value
);
}
Ok(())
}