use rustleaf::core::Value;
use rustleaf::eval::Evaluator;
use std::fs;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_script_loading_and_function_call() {
let mut evaluator = Evaluator::new();
let script_path = "tests/user/polynomial.rustleaf";
let script_source = fs::read_to_string(script_path).expect("Failed to read script");
evaluator
.eval_str(&script_source)
.expect("Failed to evaluate script");
let test_cases = [
(0.0, 1.0), (1.0, 6.0), (2.0, 15.0), (-1.0, 0.0), ];
for (input, expected) in test_cases {
let polynomial = evaluator
.get("polynomial")
.expect("Failed to get polynomial function");
let result = evaluator
.call(polynomial, &[Value::Float(input)])
.expect("Failed to call polynomial");
let y = result.as_f64().expect("Expected float result");
assert!(
(y - expected).abs() < 1e-10,
"polynomial({}) = {}, expected {}",
input,
y,
expected
);
}
}
}