refactor: add and use testing helper fn eval

This commit is contained in:
electria 2026-09-28 13:01:24 -07:00
commit c3526bf161
Signed by: electria
SSH key fingerprint: SHA256:8LlB3ucPbBHqozqkhsNbaV5oG3SlzzqUj8FZDL6IPQs

View file

@ -5,62 +5,40 @@ use rug::Float;
use crate::nodes::{Function, Node, Nodes, Operator, PREC}; use crate::nodes::{Function, Node, Nodes, Operator, PREC};
fn eval(s: &str) -> f64 {
Nodes::from_str(s).unwrap().evaluate().to_f64()
}
#[test] #[test]
fn plus_minus_order() { fn plus_minus_order() {
assert_eq!( assert_eq!(eval("1 - 4 - 5"), -8.);
Nodes::from_str("1 - 4 - 5").unwrap().evaluate().to_f64(), assert_eq!(eval("1 - 4 + 5"), 2.);
-8. assert_eq!(eval("1 + 4 - 5"), 0.);
);
assert_eq!(
Nodes::from_str("1 - 4 + 5").unwrap().evaluate().to_f64(),
2.
);
assert_eq!(
Nodes::from_str("1 + 4 - 5").unwrap().evaluate().to_f64(),
0.
);
} }
#[test] #[test]
fn e_edge_case() { fn e_edge_case() {
assert_eq!(Nodes::from_str("1e-1").unwrap().evaluate().to_f64(), 0.1) assert_eq!(eval("1e-1"), 0.1)
} }
#[test] #[test]
fn implicit_mult() { fn implicit_mult() {
assert_eq!( assert_eq!(eval("10 sin(10)"), -5.440211108893698);
Nodes::from_str("10 sin(10)").unwrap().evaluate().to_f64(),
-5.440211108893698
);
assert_eq!( assert_eq!(eval("(10)(10)"), 100.,)
Nodes::from_str("(10)(10)").unwrap().evaluate().to_f64(),
100.,
)
} }
#[test] #[test]
fn constants() { fn constants() {
assert_eq!( assert_eq!(eval("c"), 299792458.);
Nodes::from_str("c").unwrap().evaluate().to_f64(), assert_eq!(eval("A"), 6.02214076e23);
299792458. assert_eq!(eval("pi"), f64::consts::PI);
);
assert_eq!(
Nodes::from_str("A").unwrap().evaluate().to_f64(),
6.02214076e23
);
assert_eq!(
Nodes::from_str("pi").unwrap().evaluate().to_f64(),
f64::consts::PI
);
} }
#[test] #[test]
fn unary_operators() { fn unary_operators() {
assert_eq!(Nodes::from_str("-10").unwrap().evaluate().to_f64(), -10.); assert_eq!(eval("-10"), -10.);
assert_eq!(Nodes::from_str("+10").unwrap().evaluate().to_f64(), 10.); assert_eq!(eval("+10"), 10.);
} }
#[test] #[test]