MiniGridEnv / tests /test_grid_to_text.py
yashu2000's picture
Upload folder using huggingface_hub
a03a89b verified
"""Tests for MiniGrid observation text rendering."""
from types import SimpleNamespace
import numpy as np
from MiniGridEnv.env.grid_to_text import grid_to_text
def _empty_obs():
grid = np.ones((7, 7, 3), dtype=np.int64) # object type: empty
grid[:, :, 1] = 0 # default color red (unused for empties)
grid[:, :, 2] = 0
return {"image": grid, "direction": 0, "mission": "go to the red ball"}
def test_empty_room_description():
text = grid_to_text(_empty_obs())
assert "Mission: go to the red ball" in text
assert "You are facing east." in text
assert "Notable objects: none visible." in text
def test_object_detection():
obs = _empty_obs()
obs["image"][4, 2, 0] = 6 # ball
obs["image"][4, 2, 1] = 0 # red
text = grid_to_text(obs)
assert "red ball" in text
def test_door_states():
obs = _empty_obs()
obs["image"][5, 3, 0] = 4 # door ahead
obs["image"][5, 3, 1] = 2 # blue
obs["image"][5, 3, 2] = 1 # closed
text = grid_to_text(obs)
assert "closed blue door" in text
def test_wall_boundaries():
obs = _empty_obs()
obs["image"][5, 3, 0] = 2 # wall
text = grid_to_text(obs)
assert "Directly ahead: a wall." in text
def test_carrying_object():
carrying = SimpleNamespace(type="key", color="blue")
text = grid_to_text(_empty_obs(), carrying=carrying)
assert "You are carrying: a blue key." in text
def test_egocentric_directions():
obs = _empty_obs()
obs["image"][1, 3, 0] = 5 # key
obs["image"][1, 3, 1] = 1 # green
text = grid_to_text(obs)
assert "5 steps ahead" in text
def test_multiple_objects():
obs = _empty_obs()
obs["image"][5, 2, 0] = 5 # key
obs["image"][5, 2, 1] = 2 # blue
obs["image"][4, 4, 0] = 6 # ball
obs["image"][4, 4, 1] = 0 # red
obs["image"][5, 3, 0] = 4 # door
obs["image"][5, 3, 1] = 4 # yellow
obs["image"][5, 3, 2] = 0 # open
text = grid_to_text(obs)
assert "blue key" in text
assert "red ball" in text
assert "open yellow door" in text
def test_unseen_cells_ignored():
obs = _empty_obs()
obs["image"][1, 1, 0] = 0 # unseen
text = grid_to_text(obs)
assert "Notable objects: none visible." in text