From f1abeb26d733d9b711284711ec8a61ab16bbf621 Mon Sep 17 00:00:00 2001 From: Alex Selimov Date: Sun, 6 Apr 2025 23:12:12 -0400 Subject: [PATCH] Add basic tests for ObjecitiveFun struct --- src/objective_function.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/objective_function.rs b/src/objective_function.rs index 1ae411e..9c8cfe3 100644 --- a/src/objective_function.rs +++ b/src/objective_function.rs @@ -82,3 +82,32 @@ impl, E> Fun { Fun { function, prime } } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_eval() { + let function = Box::new(|x: &[f64]| -> f64 { x[0] + x[1] }); + let fun_with_numerical_diff = FunWithNumericalDiff { + function, + dx: 1e-6, + style: DiffStyle::ForwardDifference, + }; + assert_eq!(fun_with_numerical_diff.eval(&vec![1.0, 2.0]), 3.0); + } + + #[test] + fn test_prime() { + let function = Box::new(|x: &[f64]| -> f64 { x[0] + x[1] }); + let fun_with_numerical_diff = FunWithNumericalDiff { + function, + dx: 1e-6, + style: DiffStyle::ForwardDifference, + }; + let prime = fun_with_numerical_diff.prime(&vec![1.0, 2.0]); + assert!(prime[0] - 1.0 < 1e-6); + assert!(prime[1] - 1.0 < 1e-6); + } +}