summaryrefslogtreecommitdiff
path: root/dungeon/tests
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-11-12 11:01:21 -0500
committerFreya Murphy <freya@freyacat.org>2025-11-12 23:48:49 -0500
commitab1392bba09f8b58dc496b3a3f5b980bc5b475c8 (patch)
tree2044f352eb84e473d037e0b74428914c04e5a754 /dungeon/tests
parentdungeon: bsp generate should return a floor to use same single rng (diff)
downloadDungeonCrawl-ab1392bba09f8b58dc496b3a3f5b980bc5b475c8.tar.gz
DungeonCrawl-ab1392bba09f8b58dc496b3a3f5b980bc5b475c8.tar.bz2
DungeonCrawl-ab1392bba09f8b58dc496b3a3f5b980bc5b475c8.zip
dungeon: switch to only using small rng from rand
Diffstat (limited to 'dungeon/tests')
-rw-r--r--dungeon/tests/bsp.rs (renamed from dungeon/tests/bsp_tests.rs)25
1 files changed, 16 insertions, 9 deletions
diff --git a/dungeon/tests/bsp_tests.rs b/dungeon/tests/bsp.rs
index 09d2d3a..60198a5 100644
--- a/dungeon/tests/bsp_tests.rs
+++ b/dungeon/tests/bsp.rs
@@ -3,11 +3,11 @@
mod tests {
use dungeon::*;
use pos::Pos;
- use rand::{Rng, SeedableRng};
+ use rand::{Rng, SeedableRng, rngs::SmallRng};
/// Generate a set of test seeds for reproducibility with a seeded RNG
fn generate_test_seeds(seed: u64) -> Vec<u64> {
- let mut rng = rand::rngs::StdRng::seed_from_u64(seed);
+ let mut rng = SmallRng::seed_from_u64(seed);
// Generate 100 random u64 seeds
(0..100).map(|_| rng.random_range(0..u64::MAX)).collect()
}
@@ -17,7 +17,8 @@ mod tests {
fn test_bsp_integration() {
let test_seeds = generate_test_seeds(123456);
for seed in test_seeds {
- let floor = bsp::generate(seed);
+ let rng = SmallRng::seed_from_u64(seed);
+ let floor = bsp::generate(seed, rng);
// Basic integration test: ensure we get valid data
assert!(!floor.tiles().is_empty());
}
@@ -28,7 +29,8 @@ mod tests {
fn test_bsp_player_start() {
let test_seeds = generate_test_seeds(654321);
for seed in test_seeds {
- let floor = bsp::generate(seed);
+ let rng = SmallRng::seed_from_u64(seed);
+ let floor = bsp::generate(seed, rng);
// Ensure player start is a room tile
let start = floor.player_start();
assert_eq!(floor.get(start), map::Tile::Room);
@@ -40,7 +42,8 @@ mod tests {
fn test_bsp_2_or_more_rooms() {
let test_seeds = generate_test_seeds(111222);
for seed in test_seeds {
- let floor = bsp::generate(seed);
+ let rng = SmallRng::seed_from_u64(seed);
+ let floor = bsp::generate(seed, rng);
// Ensure we have at least one room tile
let room_count = floor
.tiles()
@@ -59,7 +62,8 @@ mod tests {
fn test_bsp_walls_on_borders() {
let test_seeds = generate_test_seeds(777888);
for seed in test_seeds {
- let floor = bsp::generate(seed);
+ let rng = SmallRng::seed_from_u64(seed);
+ let floor = bsp::generate(seed, rng);
// Go through all tiles, and ensure border tiles are walls
for pos in Pos::values() {
if pos.is_border() {
@@ -78,8 +82,10 @@ mod tests {
fn test_bsp_reproducibility() {
let test_seeds = generate_test_seeds(111111);
for seed in test_seeds {
- let floor1 = bsp::generate(seed);
- let floor2 = bsp::generate(seed);
+ let rng1 = SmallRng::seed_from_u64(seed);
+ let rng2 = SmallRng::seed_from_u64(seed);
+ let floor1 = bsp::generate(seed, rng1);
+ let floor2 = bsp::generate(seed, rng2);
assert_eq!(
floor1.tiles(),
floor2.tiles(),
@@ -104,7 +110,8 @@ mod tests {
// Helper function to check that all air tiles are reachable from player start
fn check_air_tiles_reachable(seed: u64) {
- let floor = bsp::generate(seed);
+ let rng = SmallRng::seed_from_u64(seed);
+ let floor = bsp::generate(seed, rng);
// BFS to find all reachable air tiles
let mut visited = vec![false; TILE_COUNT];