runmat-config 0.5.2

Shared configuration schema and loaders for RunMat
Documentation
use runmat_config::runtime::{ConfigLoader, RunMatRuntimeConfig};
use tempfile::TempDir;

#[test]
fn toml_round_trip() {
    let temp_dir = TempDir::new().unwrap();
    let path = temp_dir.path().join("runmat.toml");

    let mut config = RunMatRuntimeConfig::default();
    config.runtime.callstack_limit = 777;
    config.jit.threshold = 25;

    ConfigLoader::save_to_file(&config, &path).unwrap();
    let loaded = ConfigLoader::load_from_file(&path).unwrap();

    assert_eq!(loaded.runtime.callstack_limit, 777);
    assert_eq!(loaded.jit.threshold, 25);
}

#[test]
fn json_round_trip() {
    let temp_dir = TempDir::new().unwrap();
    let path = temp_dir.path().join("runmat.json");

    let mut config = RunMatRuntimeConfig::default();
    config.plotting.mode = runmat_config::runtime::PlotMode::Headless;
    config.accelerate.enabled = false;

    ConfigLoader::save_to_file(&config, &path).unwrap();
    let loaded = ConfigLoader::load_from_file(&path).unwrap();

    assert_eq!(
        loaded.plotting.mode,
        runmat_config::runtime::PlotMode::Headless
    );
    assert!(!loaded.accelerate.enabled);
}