use symbios::System;
#[test]
fn test_standard_math_library() {
let mut sys = System::new();
sys.add_rule("A(x) -> B(sin(x)) C(floor(x)) D(max(x, 10))")
.unwrap();
sys.set_axiom("A(1.57079632679)").unwrap();
sys.derive(1).unwrap();
let v_b = sys.state.get_view(0).unwrap();
assert!((v_b.params[0] - 1.0).abs() < 1e-8, "sin failed");
let v_c = sys.state.get_view(1).unwrap();
assert_eq!(v_c.params[0], 1.0, "floor failed");
let v_d = sys.state.get_view(2).unwrap();
assert_eq!(v_d.params[0], 10.0, "max failed");
}
#[test]
fn test_math_error_handling() {
let mut sys = System::new();
sys.add_rule("A(x) -> B(sqrt(x))").unwrap();
sys.set_axiom("A(-1)").unwrap();
let res = sys.derive(1);
assert!(res.is_err());
}