use ndarray::{array, Array0, Axis}; use csaps::CubicSmoothingSpline; #[test] #[should_panic(expected = "Data site values must satisfy the condition: x1 < x2 < ... < xN")] fn test_sites_invalid_order_1() { let x = array![1., 2., 2., 4.]; let y = array![1., 2., 3., 4.]; CubicSmoothingSpline::new(&x, &y) .make() .unwrap(); } #[test] #[should_panic(expected = "Data site values must satisfy the condition: x1 < x2 < ... < xN")] fn test_sites_invalid_order_2() { let x = array![1., 2., 3., 1.]; let y = array![1., 2., 3., 4.]; CubicSmoothingSpline::new(&x, &y) .make() .unwrap(); } #[test] #[should_panic(expected = "`y` has zero dimensionality")] fn test_zero_ndim_y_error() { let x = array![1., 2., 3., 4.]; let y = Array0::::zeros(()); CubicSmoothingSpline::new(&x, &y) .make() .unwrap(); } #[test] #[should_panic(expected = "The shape[0] (5) of `y` data is not equal to `x` size (4)")] fn test_data_size_mismatch_error() { let x = array![1., 2., 3., 4.]; let y = array![1., 2., 3., 4., 5.]; CubicSmoothingSpline::new(&x, &y) .make() .unwrap(); } #[test] #[should_panic(expected = "`axis` value (1) is out of bounds `y` dimensionality (1)")] fn test_axis_out_of_bounds_error() { let x = array![1., 2., 3., 4.]; let y = array![1., 2., 3., 4.]; CubicSmoothingSpline::new(&x, &y) .with_axis(Axis(1)) .make() .unwrap(); } #[test] #[should_panic(expected = "`weights` size (5) is not equal to `x` size (4)")] fn test_weights_size_mismatch_error() { let x = array![1., 2., 3., 4.]; let y = array![1., 2., 3., 4.]; let w = array![1., 2., 3., 4., 5.]; CubicSmoothingSpline::new(&x, &y) .with_weights(&w) .make() .unwrap(); } #[test] #[should_panic(expected = "`smooth` value must be in range 0..1, given -0.5")] fn test_smooth_less_than_error() { let x = array![1., 2., 3., 4.]; let y = array![1., 2., 3., 4.]; let s = -0.5; CubicSmoothingSpline::new(&x, &y) .with_smooth(s) .make() .unwrap(); } #[test] #[should_panic(expected = "`smooth` value must be in range 0..1, given 1.5")] fn test_smooth_greater_than_error() { let x = array![1., 2., 3., 4.]; let y = array![1., 2., 3., 4.]; let s = 1.5; CubicSmoothingSpline::new(&x, &y) .with_smooth(s) .make() .unwrap(); } #[test] #[should_panic(expected = "The spline has not been computed, use `make` method before")] fn test_evaluate_not_valid_error() { let x = array![1., 2., 3., 4.]; let y = array![1., 2., 3., 4.]; let xi = array![1., 2., 3., 4.]; let spline = CubicSmoothingSpline::new(&x, &y); spline.evaluate(&xi).unwrap(); }