diff options
Diffstat (limited to 'dungeon/tests')
| -rw-r--r-- | dungeon/tests/bsp_tests.rs | 22 |
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); } } |