//! Integration Tests for BSP dungeon generation #[cfg(test)] mod tests { use dungeon::*; /// Basic integration test for BSP generation #[test] fn test_bsp_integration() { let seed = 12345u64; let (tiles, player_start) = bsp::generate(seed); // Basic integration test: ensure we get valid data assert!(!tiles.is_empty()); assert!(player_start.x() < map::MAP_SIZE); assert!(player_start.y() < map::MAP_SIZE); } /// Test that BSP-generated floors have a valid player start #[test] fn test_bsp_player_start() { let seed = 12345u64; let (tiles, player_start) = bsp::generate(seed); // Ensure player start is within bounds assert!(player_start.x() < map::MAP_SIZE); assert!(player_start.y() < map::MAP_SIZE); // Ensure player start is a room tile let idx = player_start.idx(); 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); } }