mirror of
https://github.com/Farama-Foundation/Gymnasium.git
synced 2025-08-02 06:16:32 +00:00
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
import pytest
|
|
import numpy as np
|
|
|
|
from gym.envs.toy_text.frozen_lake import generate_random_map
|
|
|
|
|
|
# Test that FrozenLake map generation creates valid maps of various sizes.
|
|
def test_frozenlake_dfs_map_generation():
|
|
def frozenlake_dfs_path_exists(res):
|
|
frontier, discovered = [], set()
|
|
frontier.append((0, 0))
|
|
while frontier:
|
|
r, c = frontier.pop()
|
|
if not (r, c) in discovered:
|
|
discovered.add((r, c))
|
|
directions = [(1, 0), (0, 1), (-1, 0), (0, -1)]
|
|
for x, y in directions:
|
|
r_new = r + x
|
|
c_new = c + y
|
|
if r_new < 0 or r_new >= size or c_new < 0 or c_new >= size:
|
|
continue
|
|
if res[r_new][c_new] == "G":
|
|
return True
|
|
if res[r_new][c_new] not in "#H":
|
|
frontier.append((r_new, c_new))
|
|
return False
|
|
|
|
map_sizes = [5, 10, 200]
|
|
for size in map_sizes:
|
|
new_frozenlake = generate_random_map(size)
|
|
assert len(new_frozenlake) == size
|
|
assert len(new_frozenlake[0]) == size
|
|
assert frozenlake_dfs_path_exists(new_frozenlake)
|