src/filter/dsl/error_test.rs

#[cfg(test)]
mod tests {
    use crate::filter::dsl::error::DslError;

    #[test]
    fn syntax_error_carries_column() {
        let err = DslError::Syntax {
            column: 12,
            message: "expected `)`".into(),
        };
        assert_eq!(err.column(), Some(12));
        assert_eq!(err.kind(), "syntax");
    }

    #[test]
    fn unknown_field_has_no_column() {
        let err = DslError::UnknownField {
            field: "foo".into(),
        };
        assert_eq!(err.column(), None);
        assert_eq!(err.kind(), "unknown_field");
    }

    #[test]
    fn display_formats_syntax_error() {
        let err = DslError::Syntax {
            column: 4,
            message: "unterminated regex".into(),
        };
        let rendered = err.to_string();
        assert!(rendered.contains("column 4"));
        assert!(rendered.contains("unterminated regex"));
    }

    #[test]
    fn display_formats_invalid_regex() {
        let err = DslError::InvalidRegex {
            pattern: "(".into(),
            reason: "unclosed group".into(),
        };
        assert!(err.to_string().contains("/(/"));
    }
}