fn test_schemable_filter_try_from()

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(())
    }