sciforge 0.0.3

A comprehensive scientific computing library in pure Rust with zero dependencies
Documentation
use sciforge::parser::toml::{TomlValue, parse_toml, parse_toml_with_max_depth, validate_toml};

#[test]
fn toml_string() {
    let input = b"key = \"hello\"";
    let val = parse_toml(input).unwrap();
    assert!(val.is_table());
}

#[test]
fn toml_integer() {
    let input = b"key = 42";
    let val = parse_toml(input).unwrap();
    assert!(val.is_table());
}

#[test]
fn toml_float() {
    let input = b"key = 3.14";
    let val = parse_toml(input).unwrap();
    assert!(val.is_table());
}

#[test]
fn toml_bool() {
    let input = b"key = true";
    let val = parse_toml(input).unwrap();
    assert!(val.is_table());
}

#[test]
fn toml_table() {
    let input = b"[section]\nkey = \"val\"";
    let val = parse_toml(input).unwrap();
    assert!(val.is_table());
}

#[test]
fn toml_array() {
    let input = b"key = [1, 2, 3]";
    let val = parse_toml(input).unwrap();
    assert!(val.is_array() || val.is_table());
}

#[test]
fn toml_validate() {
    assert!(validate_toml(b"key = 42").is_ok());
}

#[test]
fn toml_max_depth() {
    let input = b"[section]\nkey = 1";
    let val = parse_toml_with_max_depth(input, 10).unwrap();
    assert!(val.is_table());
}

#[test]
fn toml_empty_is_valid() {
    assert!(validate_toml(b"").is_ok());
}

#[test]
fn toml_max_depth_exceeded() {
    use sciforge::parser::toml::TomlErrorKind;
    assert_eq!(
        parse_toml_with_max_depth(b"[a]\nk = [1]", 2)
            .unwrap_err()
            .kind,
        TomlErrorKind::MaxDepthExceeded,
    );
}

#[test]
fn toml_value_methods() {
    assert!(TomlValue::Table.is_table());
    assert!(TomlValue::Array.is_array());
    assert_eq!(TomlValue::Integer(5).as_integer(), Some(5));
    assert_eq!(TomlValue::Bool(true).as_bool(), Some(true));
    assert_eq!(TomlValue::Float(1.0).as_float(), Some(1.0));
    assert_eq!(TomlValue::String("hi").as_str(), Some("hi"));
}