expr-solver 1.0.6

Solves a mathematical expression while following precedence and associativity.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use expr_solver::resolve;

#[test]
fn basic_resolution() {
    assert_eq!(resolve("(3)".to_string()), Ok(3.0));
    assert_eq!(resolve("(3+3)*3".to_string()), Ok(18.0));
    assert_eq!(resolve("3!".to_string()), Ok(6.0));
    assert_eq!(resolve("-3!".to_string()), Ok(-6.0));
    assert_eq!(resolve("3.2!".to_string()), Ok(7.756592718904097));
    assert_eq!(resolve("3--3!".to_string()), Ok(9.0));
    assert_eq!(resolve("-2".to_string()), Ok(-2.0));
    assert_eq!(resolve("2--2".to_string()), Ok(4.0));
    assert_eq!(resolve("2+2*2*2*2+2".to_string()), Ok(20.0));
    assert_eq!(resolve("-2/2+2*2".to_string()), Ok(3.0));
}