sciforge 0.0.3

A comprehensive scientific computing library in pure Rust with zero dependencies
Documentation
use sciforge::parser::yaml::{
    YamlErrorKind, YamlValue, parse_yaml, parse_yaml_with_max_depth, validate_yaml,
};

#[test]
fn yaml_null() {
    assert_eq!(parse_yaml(b"null").unwrap(), YamlValue::Null);
}

#[test]
fn yaml_tilde_null() {
    assert_eq!(parse_yaml(b"~").unwrap(), YamlValue::Null);
}

#[test]
fn yaml_bool() {
    assert_eq!(parse_yaml(b"true").unwrap().as_bool(), Some(true));
}

#[test]
fn yaml_number() {
    assert_eq!(parse_yaml(b"42").unwrap().as_number(), Some(42.0));
}

#[test]
fn yaml_string() {
    assert_eq!(parse_yaml(b"hello").unwrap().as_str(), Some("hello"));
}

#[test]
fn yaml_quoted_string() {
    assert_eq!(
        parse_yaml(b"\"hello world\"").unwrap().as_str(),
        Some("hello world")
    );
}

#[test]
fn yaml_mapping() {
    assert!(parse_yaml(b"key: value").unwrap().is_mapping());
}

#[test]
fn yaml_sequence() {
    assert!(parse_yaml(b"- a\n- b\n- c").unwrap().is_sequence());
}

#[test]
fn yaml_validate() {
    assert!(validate_yaml(b"key: val").is_ok());
}

#[test]
fn yaml_empty_is_error() {
    assert!(validate_yaml(b"").is_err());
}

#[test]
fn yaml_max_depth() {
    assert_eq!(
        parse_yaml_with_max_depth(b"a:\n  b:\n    c:\n      d: 1", 2)
            .unwrap_err()
            .kind,
        YamlErrorKind::MaxDepthExceeded,
    );
}

#[test]
fn yaml_value_methods() {
    assert!(YamlValue::Mapping(Vec::new()).is_mapping());
    assert!(YamlValue::Sequence(Vec::new()).is_sequence());
    assert_eq!(YamlValue::Null.as_str(), None);
}