extern crate mrubyedge;
extern crate mrubyedge_math as mruby_math;
mod helpers;
use helpers::*;
#[test]
fn test_math_pi_constant() {
let code = "
Math::PI
";
let binary = mrbc_compile("math_pi_const", code);
let mut rite = mrubyedge::rite::load(&binary).unwrap();
let mut vm = mrubyedge::yamrb::vm::VM::open(&mut rite);
mruby_math::init_math(&mut vm);
let result = vm.run().unwrap();
let value: f64 = result.as_ref().try_into().unwrap();
assert!((value - std::f64::consts::PI).abs() < 1e-10);
}
#[test]
fn test_math_e_constant() {
let code = "
Math::E
";
let binary = mrbc_compile("math_e_const", code);
let mut rite = mrubyedge::rite::load(&binary).unwrap();
let mut vm = mrubyedge::yamrb::vm::VM::open(&mut rite);
mruby_math::init_math(&mut vm);
let result = vm.run().unwrap();
let value: f64 = result.as_ref().try_into().unwrap();
assert!((value - std::f64::consts::E).abs() < 1e-10);
}
#[test]
fn test_math_sqrt_smoke() {
let code = "
Math.sqrt(4.0)
";
let binary = mrbc_compile("math_sqrt_smoke", code);
let mut rite = mrubyedge::rite::load(&binary).unwrap();
let mut vm = mrubyedge::yamrb::vm::VM::open(&mut rite);
mruby_math::init_math(&mut vm);
let result = vm.run().unwrap();
let value: f64 = result.as_ref().try_into().unwrap();
assert_eq!(value, 2.0);
}
#[test]
fn test_math_sin_smoke() {
let code = "
Math.sin(Math::PI / 2)
";
let binary = mrbc_compile("math_sin_smoke", code);
let mut rite = mrubyedge::rite::load(&binary).unwrap();
let mut vm = mrubyedge::yamrb::vm::VM::open(&mut rite);
mruby_math::init_math(&mut vm);
let result = vm.run().unwrap();
let value: f64 = result.as_ref().try_into().unwrap();
assert!((value - 1.0).abs() < 1e-10);
}