iridium-db 0.4.0

A high-performance vector-graph hybrid storage and indexing engine
use super::*;

#[test]
fn workload_generator_is_deterministic_for_same_seed() {
    let cfg = WorkloadConfig {
        seed: 42,
        node_count: 1_000,
        edge_count: 32,
        hot_node_percent: 20,
        max_low_degree: 8,
    };

    let first: Vec<EdgeInsert> = edge_workload_generator(cfg).unwrap().collect();
    let second: Vec<EdgeInsert> = edge_workload_generator(cfg).unwrap().collect();
    assert_eq!(first, second);
}

#[test]
fn workload_generator_produces_low_degree_edges() {
    let cfg = WorkloadConfig {
        seed: 7,
        node_count: 10_000,
        edge_count: 512,
        hot_node_percent: 10,
        max_low_degree: 4,
    };

    let max_span = cfg.max_low_degree as u64 + 1;
    for edge in edge_workload_generator(cfg).unwrap() {
        let span = edge.dst.abs_diff(edge.src);
        assert!(span <= max_span || cfg.node_count - span <= max_span);
    }
}

#[test]
fn workload_config_validation_rejects_invalid_values() {
    let invalid = WorkloadConfig {
        seed: 1,
        node_count: 0,
        edge_count: 10,
        hot_node_percent: 10,
        max_low_degree: 4,
    };
    assert!(edge_workload_generator(invalid).is_err());
}