rust_dynamic 0.49.0

Support for dynamically-typed values in run-time
Documentation
#[cfg(test)]
mod tests {
    #![allow(unused_imports)]
    use super::*;
    use num::complex::Complex;
    use rust_dynamic::value::Value;

    #[test]
    fn test_complex_int_type() {
        let v = Value::from(Complex::new(10 as i64, 20 as i64)).unwrap();
        assert_eq!(v.type_name(), "ComplexInteger");
    }
    #[test]
    fn test_complex_float_type() {
        let v = Value::from(Complex::new(10.0 as f64, 20.0 as f64)).unwrap();
        assert_eq!(v.type_name(), "ComplexFloat");
    }
    #[test]
    fn test_complex_int_cast() {
        let v = Value::from(Complex::new(10.0 as i64, 20.0 as i64)).unwrap();
        assert_eq!(v.cast_complex_int().unwrap(), Complex::new(10.0 as i64, 20.0 as i64));
    }
    #[test]
    fn test_complex_float_cast() {
        let v = Value::from(Complex::new(10.0 as f64, 20.0 as f64)).unwrap();
        assert_eq!(v.cast_complex_float().unwrap(), Complex::new(10.0 as f64, 20.0 as f64));
    }
    #[test]
    fn test_complex_int_eq() {
        let v1 = Value::from(Complex::new(10.0 as i64, 20.0 as i64)).unwrap();
        let v2 = Value::from(Complex::new(10.0 as i64, 20.0 as i64)).unwrap();
        assert!(v1 == v2);
    }
    #[test]
    fn test_complex_float_eq() {
        let v1 = Value::from(Complex::new(10.0 as f64, 20.0 as f64)).unwrap();
        let v2 = Value::from(Complex::new(10.0 as f64, 20.0 as f64)).unwrap();
        assert!(v1 == v2);
    }
    #[test]
    fn test_complex_float_gt() {
        let v1 = Value::from(Complex::new(20.0 as f64, 20.0 as f64)).unwrap();
        let v2 = Value::from(Complex::new(10.0 as f64, 20.0 as f64)).unwrap();
        assert!(v1 > v2);
    }
    #[test]
    fn test_complex_int_add() {
        let v = Value::from(Complex::new(10 as i64, 20 as i64)).unwrap();
        let res = v.cast_complex_int().unwrap() + Complex::new(10 as i64, 20 as i64);
        assert_eq!(res.re, 20 as i64);
    }
    #[test]
    fn test_complex_float_add() {
        let mut v = Value::from(Complex::new(10 as f64, 20 as f64)).unwrap();
        v = v.clone() + v;
        assert_eq!(v.cast_complex_float().unwrap().re, 20.0 as f64);
    }
}