in crates/core/src/expr/filter.rs [224:261]
fn test_schemable_filter_try_from() -> Result<()> {
let schema = create_test_schema();
// Test string column filter creation
let string_filter = Filter {
field_name: "string_col".to_string(),
operator: ExprOperator::Eq,
field_value: "test_value".to_string(),
};
let schemable = SchemableFilter::try_from((string_filter, &schema))?;
assert_eq!(schemable.field.name(), "string_col");
assert_eq!(schemable.field.data_type(), &DataType::Utf8);
assert_eq!(schemable.operator, ExprOperator::Eq);
// Test integer column filter creation
let int_filter = Filter {
field_name: "int_col".to_string(),
operator: ExprOperator::Gt,
field_value: "42".to_string(),
};
let schemable = SchemableFilter::try_from((int_filter, &schema))?;
assert_eq!(schemable.field.name(), "int_col");
assert_eq!(schemable.field.data_type(), &DataType::Int64);
assert_eq!(schemable.operator, ExprOperator::Gt);
// Test error case - non-existent column
let invalid_filter = Filter {
field_name: "non_existent".to_string(),
operator: ExprOperator::Eq,
field_value: "value".to_string(),
};
assert!(SchemableFilter::try_from((invalid_filter, &schema)).is_err());
Ok(())
}