diff --git a/packages/devkit/src/lib.rs b/packages/devkit/src/lib.rs index 41ba9eb..729e489 100644 --- a/packages/devkit/src/lib.rs +++ b/packages/devkit/src/lib.rs @@ -4,4 +4,4 @@ pub mod error; pub mod harness; pub mod simulation; pub mod test_helpers; -pub mod types; \ No newline at end of file +pub mod types; diff --git a/packages/devkit/src/test_helpers/mod.rs b/packages/devkit/src/test_helpers/mod.rs index 08762ee..b601a87 100644 --- a/packages/devkit/src/test_helpers/mod.rs +++ b/packages/devkit/src/test_helpers/mod.rs @@ -1,3 +1,34 @@ +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) +} //! Test helpers: deterministic fee sequence generator and SQLite fixture builder. use rand::{Rng, SeedableRng}; @@ -83,4 +114,4 @@ mod tests { fn flat_returns_uniform_sequence() { assert_eq!(FeeGenerator::flat(500, 5), vec![500u64; 5]); } -} \ No newline at end of file +}