summaryrefslogtreecommitdiff
path: root/dungeon/tests/bsp_tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'dungeon/tests/bsp_tests.rs')
-rw-r--r--dungeon/tests/bsp_tests.rs22
1 files changed, 20 insertions, 2 deletions
diff --git a/dungeon/tests/bsp_tests.rs b/dungeon/tests/bsp_tests.rs
index 6bd0153..16a8a77 100644
--- a/dungeon/tests/bsp_tests.rs
+++ b/dungeon/tests/bsp_tests.rs
@@ -22,8 +22,26 @@ mod tests {
// Ensure player start is within bounds
assert!(player_start.x() < map::MAP_SIZE);
assert!(player_start.y() < map::MAP_SIZE);
- // Ensure player start is an air tile
+ // Ensure player start is a room tile
let idx = player_start.idx();
- assert_eq!(tiles[idx], map::Tile::Air);
+ assert_eq!(tiles[idx], map::Tile::Room);
+ }
+
+ /// Test that BSP-generated floors have at least two rooms
+ #[test]
+ fn test_bsp_2_or_more_rooms() {
+ let seed = 12345u64;
+ let (tiles, _player_start) = bsp::generate(seed);
+ // Ensure we have at least two rooms
+ let mut room_count = 0;
+ let mut visited = vec![false; tiles.len()];
+ for (i, &tile) in tiles.iter().enumerate() {
+ if tile == map::Tile::Room && !visited[i] {
+ room_count += 1;
+ // Mark all connected tiles as visited
+ visited[i] = true;
+ }
+ }
+ assert!(room_count >= 2);
}
}