mrubyedge-math 0.1.2

mruby-math provides Math module for mruby/edge
Documentation
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);
}