Files
Gymnasium/tests/envs/test_frozenlake_dfs.py

34 lines
1.2 KiB
Python
Raw Normal View History

import numpy as np
import pytest
from gym.envs.toy_text.frozen_lake import generate_random_map
2021-07-29 02:26:34 +02:00
# 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()
2021-07-29 02:26:34 +02:00
frontier.append((0, 0))
while frontier:
r, c = frontier.pop()
2021-07-29 02:26:34 +02:00
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
2021-07-29 02:26:34 +02:00
if res[r_new][c_new] == "G":
return True
2021-07-29 02:26:34 +02:00
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)