Skip to content

Commit 3fd43ab

Browse files
committed
test: add deposit-fold bench and final gate
Fix field_reassign_with_default clippy errors in deposit test code (config.rs and simulation/mod.rs); add fold_deposits_sqrt bench case to diffusion_benchmark.rs. All 5 gate steps pass: fmt clean, clippy zero warnings, 800 tests pass, 812 all-features pass, 47 goldens unchanged.
1 parent fc46690 commit 3fd43ab

3 files changed

Lines changed: 58 additions & 15 deletions

File tree

benches/diffusion_benchmark.rs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,13 +257,44 @@ fn bench_afterglow_ema_pass(c: &mut Criterion) {
257257
});
258258
}
259259

260+
fn bench_fold_deposits_sqrt(c: &mut Criterion) {
261+
use tslime::simulation::config::DepositCurve;
262+
use tslime::simulation::trail_map::TrailMap;
263+
264+
let width = 400;
265+
let height = 400;
266+
let mut tm = TrailMap::new(width, height);
267+
// Populate the accumulation buffer with non-zero values.
268+
let accum = tm.accum_mut();
269+
for (i, v) in accum.iter_mut().enumerate() {
270+
*v = (i * 7 % 100) as f32 / 10.0;
271+
}
272+
273+
c.bench_function("fold_deposits_sqrt", |b| {
274+
b.iter(|| {
275+
// Re-fill accum each iteration so fold_deposits has work to do.
276+
let accum = tm.accum_mut();
277+
for (i, v) in accum.iter_mut().enumerate() {
278+
*v = (i * 7 % 100) as f32 / 10.0;
279+
}
280+
tm.fold_deposits(
281+
black_box(DepositCurve::Sqrt),
282+
black_box(1.0),
283+
black_box(1.0),
284+
black_box(0.0),
285+
);
286+
});
287+
});
288+
}
289+
260290
criterion_group!(
261291
benches,
262292
bench_diffuse_mean3x3,
263293
bench_diffuse_gaussian,
264294
bench_diffuse_comparison,
265295
bench_diffuse_gaussian_separable_sigma3,
266296
bench_decay_gamma,
267-
bench_afterglow_ema_pass
297+
bench_afterglow_ema_pass,
298+
bench_fold_deposits_sqrt
268299
);
269300
criterion_main!(benches);

src/simulation/config.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2731,21 +2731,29 @@ mod tests {
27312731
assert_eq!(cfg.deposit_cap, 0.0);
27322732
assert!(!cfg.deposit_active(), "defaults must be the off path");
27332733

2734-
let mut on = SimConfig::default();
2735-
on.deposit_curve = DepositCurve::Sqrt;
2734+
let on = SimConfig {
2735+
deposit_curve: DepositCurve::Sqrt,
2736+
..Default::default()
2737+
};
27362738
assert!(on.deposit_active());
2737-
let mut scaled = SimConfig::default();
2738-
scaled.deposit_scale = 2.0;
2739+
let scaled = SimConfig {
2740+
deposit_scale: 2.0,
2741+
..Default::default()
2742+
};
27392743
assert!(scaled.deposit_active());
2740-
let mut capped = SimConfig::default();
2741-
capped.deposit_cap = 5.0;
2744+
let capped = SimConfig {
2745+
deposit_cap: 5.0,
2746+
..Default::default()
2747+
};
27422748
assert!(capped.deposit_active());
27432749
}
27442750

27452751
#[test]
27462752
fn deposit_validation_rejects_out_of_range() {
2747-
let mut cfg = SimConfig::default();
2748-
cfg.deposit_gamma = 0.0; // below MIN_DEPOSIT_GAMMA
2753+
let cfg = SimConfig {
2754+
deposit_gamma: 0.0, // below MIN_DEPOSIT_GAMMA
2755+
..Default::default()
2756+
};
27492757
assert!(cfg.validate().is_err());
27502758
}
27512759
}

src/simulation/mod.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2030,10 +2030,12 @@ mod tests {
20302030
let off_cfg = SimConfig::default();
20312031
assert!(!off_cfg.deposit_active(), "off path sanity check");
20322032

2033-
let mut on_cfg = SimConfig::default();
2034-
on_cfg.deposit_curve = DepositCurve::Linear;
2035-
on_cfg.deposit_scale = 1.0;
2036-
on_cfg.deposit_cap = 1.0e9; // huge cap → never clips
2033+
let on_cfg = SimConfig {
2034+
deposit_curve: DepositCurve::Linear,
2035+
deposit_scale: 1.0,
2036+
deposit_cap: 1.0e9, // huge cap → never clips
2037+
..Default::default()
2038+
};
20372039
assert!(
20382040
on_cfg.deposit_active(),
20392041
"cap > 0.0 must activate the accum path"
@@ -2067,8 +2069,10 @@ mod tests {
20672069
#[test]
20682070
fn deposit_sqrt_curve_changes_output() {
20692071
let mut base = Simulation::new(40, 40, SimConfig::default(), 42, InitMode::Random, 0);
2070-
let mut cfg = SimConfig::default();
2071-
cfg.deposit_curve = crate::simulation::config::DepositCurve::Sqrt;
2072+
let cfg = SimConfig {
2073+
deposit_curve: crate::simulation::config::DepositCurve::Sqrt,
2074+
..Default::default()
2075+
};
20722076
let mut curved = Simulation::new(40, 40, cfg, 42, InitMode::Random, 0);
20732077
for _ in 0..30 {
20742078
base.update(1.0);

0 commit comments

Comments
 (0)