use datafusion::error::DataFusionError;
use ddx_core::DiffError;
pub(crate) fn to_df_err(e: DiffError) -> DataFusionError {
DataFusionError::External(Box::new(e))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn diff_error_survives_as_a_downcastable_external() {
let df_err = to_df_err(DiffError::NotImplemented("atan2".into()));
let DataFusionError::External(boxed) = &df_err else {
panic!("expected External, got {df_err:?}");
};
let recovered = boxed
.downcast_ref::<DiffError>()
.expect("the original DiffError must survive the boxing");
assert_eq!(recovered, &DiffError::NotImplemented("atan2".into()));
}
}