use crate::utils::scaling::StatsExt;
use scirs2_core::ndarray::{Array1, ArrayView1};
#[allow(dead_code)]
pub fn test_method_resolution() {
let data: Array1<f64> = Array1::from(vec![1.0, 2.0, 3.0, 4.0, 5.0]);
let view: ArrayView1<f64> = data.view();
println!("Array with data: {data:?}");
println!("Calling view.std(0.0) - this calls ndarray's built-in method:");
let builtin_std = view.std(0.0);
println!("Built-in std result: {builtin_std:?}");
println!("Calling view.standard_deviation(0.0) - this calls our trait method:");
let trait_std = view.standard_deviation(0.0);
println!("Trait standard_deviation result: {trait_std:?}");
println!("Conflict resolved: Both methods are now accessible without ambiguity!");
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_confirm_method_conflict() {
test_method_resolution();
let data: Array1<f64> = Array1::from(vec![]);
let view = data.view();
let ndarray_result = view.std(0.0);
assert!(ndarray_result.is_nan());
let our_result = view.standard_deviation(0.0);
assert_eq!(our_result, 0.0);
println!("Method resolution conflict resolved!");
println!("ndarray std result: {ndarray_result}");
println!("Our StatsExt standard_deviation result: {our_result}");
let data_with_values: Array1<f64> = Array1::from(vec![1.0, 2.0, 3.0, 4.0, 5.0]);
let view_with_values = data_with_values.view();
let ndarray_std = view_with_values.std(0.0);
let our_std = view_with_values.standard_deviation(0.0);
assert!((ndarray_std - our_std).abs() < 1e-10);
println!("Both methods give consistent results: {ndarray_std} ≈ {our_std}");
}
}