diff --git a/src/function.rs b/src/function.rs index 484e811..49b60ee 100644 --- a/src/function.rs +++ b/src/function.rs @@ -358,7 +358,7 @@ impl FunctionEntry { #[cfg(test)] fn assert( &self, settings: AppSettings, back_target: Vec<(f64, f64)>, integral_enabled: bool, - derivative_enabled: bool, roots_enabled: bool, extrema_enabled: bool, + derivative_enabled: bool, ) { assert!(self.output.back.is_some()); let back_data = self.output.back.as_ref().unwrap().clone(); @@ -369,8 +369,10 @@ impl FunctionEntry { assert_eq!(integral_enabled, self.integral); assert_eq!(derivative_enabled, self.derivative); - assert_eq!(self.output.roots.is_some(), roots_enabled); - assert_eq!(self.output.extrema.is_some(), extrema_enabled); + assert_eq!(self.output.roots.is_some(), settings.roots); + assert_eq!(self.output.extrema.is_some(), settings.extrema); + assert_eq!(self.output.derivative.is_some(), derivative_enabled); + assert_eq!(self.output.integral.is_some(), integral_enabled); } #[cfg(test)] @@ -380,14 +382,7 @@ impl FunctionEntry { ) { { self.calculate(min_x, max_x, true, settings); - self.assert( - settings, - back_values_target, - true, - true, - settings.roots, - settings.extrema, - ); + self.assert(settings, back_values_target, true, true); assert_eq!(self.output.integral.clone().unwrap().1, area_target); } } diff --git a/src/function_output.rs b/src/function_output.rs index 76c81d1..e1a375e 100644 --- a/src/function_output.rs +++ b/src/function_output.rs @@ -39,3 +39,39 @@ impl FunctionOutput { /// Invalidate Derivative data pub fn invalidate_derivative(&mut self) { self.derivative = None; } } + +#[test] +fn function_output_test() { + let mut function_output = FunctionOutput::new_empty(); + assert!(function_output.back.is_none()); + assert!(function_output.integral.is_none()); + assert!(function_output.derivative.is_none()); + assert!(function_output.extrema.is_none()); + assert!(function_output.roots.is_none()); + + function_output.back = Some(vec![Value::new(0, 0)]); + function_output.invalidate_back(); + assert!(function_output.back.is_none()); + + function_output.integral = Some((vec![Bar::new(0.0, 0.0)], 0.0)); + function_output.invalidate_integral(); + assert!(function_output.integral.is_none()); + + function_output.derivative = Some(vec![Value::new(0, 0)]); + function_output.invalidate_derivative(); + assert!(function_output.derivative.is_none()); + + function_output.back = Some(vec![Value::new(0, 0)]); + function_output.integral = Some((vec![Bar::new(0.0, 0.0)], 0.0)); + function_output.derivative = Some(vec![Value::new(0, 0)]); + function_output.extrema = Some(vec![Value::new(0, 0)]); + function_output.roots = Some(vec![Value::new(0, 0)]); + + function_output.invalidate_whole(); + + assert!(function_output.back.is_none()); + assert!(function_output.integral.is_none()); + assert!(function_output.derivative.is_none()); + assert!(function_output.extrema.is_none()); + assert!(function_output.roots.is_none()); +}