mirror of
https://github.com/Farama-Foundation/Gymnasium.git
synced 2025-08-19 05:25:54 +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)
|