From 1ae3896a21c4a62d095ae297e5260d95c5bf7a39 Mon Sep 17 00:00:00 2001 From: devwums Date: Fri, 29 May 2026 21:52:38 +0100 Subject: [PATCH] feat(devkit): add shared test helpers module --- packages/devkit/src/lib.rs | 2 ++ packages/devkit/src/test_helpers/mod.rs | 31 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 packages/devkit/src/test_helpers/mod.rs diff --git a/packages/devkit/src/lib.rs b/packages/devkit/src/lib.rs index 7ea6e37..8ded65b 100644 --- a/packages/devkit/src/lib.rs +++ b/packages/devkit/src/lib.rs @@ -4,3 +4,5 @@ pub mod error; pub mod harness; pub mod simulation; pub mod types; +#[cfg(test)] +pub mod test_helpers; diff --git a/packages/devkit/src/test_helpers/mod.rs b/packages/devkit/src/test_helpers/mod.rs new file mode 100644 index 0000000..a0fbe40 --- /dev/null +++ b/packages/devkit/src/test_helpers/mod.rs @@ -0,0 +1,31 @@ +use crate::simulation::fee_model::{FeeModel, FeeModelConfig}; +use crate::types::FeeRecord; + +/// Returns a deterministic fee sequence of `count` records seeded by `seed`. +pub fn make_fee_sequence(count: usize, seed: u64) -> Vec { + let config = FeeModelConfig { + seed: Some(seed), + ..Default::default() + }; + FeeModel::new(config).generate(count, 0) +} + +/// Returns a fee sequence where every record is flagged as a spike. +pub fn make_spike_sequence(count: usize) -> Vec { + let config = FeeModelConfig { + spike_probability: 1.0, + seed: Some(0), + ..Default::default() + }; + FeeModel::new(config).generate(count, 0) +} + +/// Returns a fee sequence with no spikes (baseline load only). +pub fn make_baseline_sequence(count: usize) -> Vec { + let config = FeeModelConfig { + spike_probability: 0.0, + seed: Some(1), + ..Default::default() + }; + FeeModel::new(config).generate(count, 0) +}