refactor: add and use testing helper fn eval
This commit is contained in:
parent
5f25c92404
commit
c3526bf161
1 changed files with 15 additions and 37 deletions
|
|
@ -5,62 +5,40 @@ use rug::Float;
|
|||
|
||||
use crate::nodes::{Function, Node, Nodes, Operator, PREC};
|
||||
|
||||
fn eval(s: &str) -> f64 {
|
||||
Nodes::from_str(s).unwrap().evaluate().to_f64()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn plus_minus_order() {
|
||||
assert_eq!(
|
||||
Nodes::from_str("1 - 4 - 5").unwrap().evaluate().to_f64(),
|
||||
-8.
|
||||
);
|
||||
|
||||
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.
|
||||
);
|
||||
assert_eq!(eval("1 - 4 - 5"), -8.);
|
||||
assert_eq!(eval("1 - 4 + 5"), 2.);
|
||||
assert_eq!(eval("1 + 4 - 5"), 0.);
|
||||
}
|
||||
|
||||
#[test]
|
||||
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]
|
||||
fn implicit_mult() {
|
||||
assert_eq!(
|
||||
Nodes::from_str("10 sin(10)").unwrap().evaluate().to_f64(),
|
||||
-5.440211108893698
|
||||
);
|
||||
assert_eq!(eval("10 sin(10)"), -5.440211108893698);
|
||||
|
||||
assert_eq!(
|
||||
Nodes::from_str("(10)(10)").unwrap().evaluate().to_f64(),
|
||||
100.,
|
||||
)
|
||||
assert_eq!(eval("(10)(10)"), 100.,)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn constants() {
|
||||
assert_eq!(
|
||||
Nodes::from_str("c").unwrap().evaluate().to_f64(),
|
||||
299792458.
|
||||
);
|
||||
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
|
||||
);
|
||||
assert_eq!(eval("c"), 299792458.);
|
||||
assert_eq!(eval("A"), 6.02214076e23);
|
||||
assert_eq!(eval("pi"), f64::consts::PI);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unary_operators() {
|
||||
assert_eq!(Nodes::from_str("-10").unwrap().evaluate().to_f64(), -10.);
|
||||
assert_eq!(Nodes::from_str("+10").unwrap().evaluate().to_f64(), 10.);
|
||||
assert_eq!(eval("-10"), -10.);
|
||||
assert_eq!(eval("+10"), 10.);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
|||
Loading…
Reference in a new issue