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());
}