diff --git a/crates/scheduler/src/test_scheduler.rs b/crates/scheduler/src/test_scheduler.rs index 18ab4d09072fa25919e6e9e1858601d5173bd239..e4c330dcd162ad6512da05c9e66449fd7da36083 100644 --- a/crates/scheduler/src/test_scheduler.rs +++ b/crates/scheduler/src/test_scheduler.rs @@ -57,7 +57,7 @@ impl TestScheduler { .map(|seed| seed.parse().unwrap()) .unwrap_or(0); - (seed..num_iterations as u64) + (seed..seed + num_iterations as u64) .map(|seed| { let mut unwind_safe_f = AssertUnwindSafe(&mut f); eprintln!("Running seed: {seed}"); diff --git a/crates/scheduler/src/tests.rs b/crates/scheduler/src/tests.rs index dc24fed68d7cb1c83953f4de38bb4392d3b61029..03fe8075f91fff2d72b9bb1c0d4d389a69d9c3bf 100644 --- a/crates/scheduler/src/tests.rs +++ b/crates/scheduler/src/tests.rs @@ -290,6 +290,31 @@ fn test_helper_methods() { assert_eq!(results, vec![10, 10, 10]); } +#[test] +fn test_many_with_arbitrary_seed() { + for seed in [0u64, 1, 5, 42] { + let mut seeds_seen = Vec::new(); + let iterations = 3usize; + + for current_seed in seed..seed + iterations as u64 { + let scheduler = Arc::new(TestScheduler::new(TestSchedulerConfig::with_seed( + current_seed, + ))); + let captured_seed = current_seed; + scheduler + .foreground() + .block_on(async { seeds_seen.push(captured_seed) }); + scheduler.run(); + } + + assert_eq!( + seeds_seen, + (seed..seed + iterations as u64).collect::>(), + "Expected {iterations} iterations starting at seed {seed}" + ); + } +} + #[test] fn test_block_with_timeout() { // Test case: future completes within timeout