rust_dynamic 0.49.0

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

    #[test]
    fn test_none() {
        assert_eq!(rust_dynamic::types::NONE, 0);
    }
    #[test]
    fn test_create_none() {
        let v = Value::new();
        assert_eq!(v.type_of(), rust_dynamic::types::NONE);
    }
    #[test]
    fn test_create_none_type_name() {
        let v = Value::new();
        assert_eq!(v.type_name(), "None");
    }
    #[test]
    fn test_create_float_type_name() {
        let v = Value::from(42.0).unwrap();
        assert_eq!(v.type_name(), "Float");
    }
    #[test]
    fn test_create_embedding_type_name() {
        let v = Value::embedding(vec![42.0]);
        assert_eq!(v.type_name(), "Embedding");
    }
    #[test]
    fn test_create_int_type_name() {
        let v = Value::from(42 as i64).unwrap();
        assert_eq!(v.type_name(), "Integer");
    }
    #[test]
    fn test_create_float32_type_name() {
        let v = Value::from(42.0 as f32).unwrap();
        assert_eq!(v.type_name(), "Float");
    }
    #[test]
    fn test_create_int32_type_name() {
        let v = Value::from(42 as i32).unwrap();
        assert_eq!(v.type_name(), "Integer");
    }
    #[test]
    fn test_create_bool_type_name() {
        let v = Value::from(true).unwrap();
        assert_eq!(v.type_name(), "Bool");
    }
    #[test]
    fn test_create_string_type_name() {
        let v = Value::from("Hello".to_string()).unwrap();
        assert_eq!(v.type_name(), "String");
    }
    #[test]
    fn test_create_str_type_name() {
        let v = Value::from("Hello").unwrap();
        assert_eq!(v.type_name(), "String");
    }
    #[test]
    fn test_create_nodata_type_name() {
        let v = Value::nodata();
        assert_eq!(v.type_name(), "NODATA");
    }
    #[test]
    fn test_create_list_type_name() {
        let v = Value::from(vec![Value::new(), Value::new()]).unwrap();
        assert_eq!(v.type_name(), "List");
    }
    #[test]
    fn test_create_matrix_type_name() {
        let v = Value::from(vec![vec![Value::new(), Value::new()]]).unwrap();
        assert_eq!(v.type_name(), "Matrix");
    }
    #[test]
    fn test_create_error_type_name() {
        let v = Value::from(BundError::new("Hello".to_string(), "World".to_string())).unwrap();
        assert_eq!(v.type_name(), "Error");
    }
    #[test]
    fn test_create_pair_type_name() {
        let v = Value::from_pair((Value::new(), Value::new()));
        assert_eq!(v.type_name(), "Pair");
    }
    #[test]
    fn test_create_ptr_type_name() {
        let v = Value::ptr("name".to_string(), vec![]);
        assert_eq!(v.type_name(), "Ptr");
    }
    #[test]
    fn test_create_call_type_name() {
        let v = Value::call("name".to_string(), vec![]);
        assert_eq!(v.type_name(), "Call");
    }
    #[test]
    fn test_create_float_nan() {
        let v = Value::nan();
        assert!(v.cast_float().unwrap().is_nan());
    }
    #[test]
    fn test_create_float_inf1() {
        let v = Value::inf();
        assert!(v.cast_float().unwrap().is_infinite());
    }
    #[test]
    fn test_create_float_inf2() {
        let v = Value::negative_inf();
        assert!(v.cast_float().unwrap().is_infinite());
    }
    #[test]
    fn test_create_float_pi() {
        use std::f64::consts::PI;

        let v = Value::pi();
        assert_eq!(v.cast_float().unwrap(), PI);
    }
    #[test]
    fn test_create_float_e() {
        use std::f64::consts::E;

        let v = Value::e();
        assert_eq!(v.cast_float().unwrap(), E);
    }
    #[test]
    fn test_create_binary_type_name() {
        let v = Value::binary();
        assert_eq!(v.type_name(), "Binary");
    }
    #[test]
    fn test_create_binary_type() {
        let v = Value::binary();
        assert_eq!(v.len(), 0);
    }
    #[test]
    fn test_create_dict_type_name() {
        let v = Value::dict();
        assert_eq!(v.type_name(), "Map");
    }
    #[test]
    fn test_create_dict_type() {
        let v = Value::dict();
        assert_eq!(v.len(), 0);
    }
    #[test]
    fn test_create_curry_type() {
        let v = Value::ptr_curry("Test", "TestPtr", Vec::new());
        assert_eq!(v.len(), 4);
    }
    #[test]
    fn test_create_message_type() {
        let v = Value::message(Value::from_string("ABC"), Value::from_string("CDE"), Value::from_string("GHI"));
        assert_eq!(v.type_name(), "Message");
    }
    #[test]
    fn test_create_conditional_type() {
        let v = Value::conditional();
        assert_eq!(v.type_name(), "Conditional");
    }
    #[test]
    fn test_create_exit_type() {
        let v = Value::exit();
        assert_eq!(v.type_name(), "Exit");
    }
    #[test]
    fn test_create_lambda_type() {
        let v = Value::lambda();
        assert_eq!(v.type_name(), "Lambda");
    }
    #[test]
    fn test_create_queue_type() {
        let v = Value::queue();
        assert_eq!(v.type_name(), "Queue");
    }
    #[test]
    fn test_create_fifo_type() {
        let v = Value::fifo();
        assert_eq!(v.type_name(), "Fifo");
    }
    #[test]
    fn test_create_operator_type() {
        let v = Value::operator(0, Value::from(42 as i64).unwrap(), Value::none());
        assert_eq!(v.type_name(), "Operator");
    }
}