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};
|
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]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue