openenv_hack / tests /test_adapter.py
thomasm6m6's picture
Initial Freeciv OpenEnv Space
8dc7642 verified
from __future__ import annotations
import json
from pathlib import Path
from freeciv_env.adapter import RawSnapshot, prepare_observation
def test_prepare_observation_from_freecivbot_fixture() -> None:
fixtures = Path("tests/fixtures")
state = json.loads((fixtures / "turn_state.json").read_text())
actions = json.loads((fixtures / "turn_actions.json").read_text())
prepared = prepare_observation(
RawSnapshot(turn=15, state=state, actions=actions),
reward=0.0,
done=False,
status="ready",
metadata={},
)
obs = prepared.observation
assert obs.turn == 15
assert obs.city_count == 2
assert obs.unit_count == 3
assert obs.known_tiles > 0
assert obs.visible_tiles > 0
assert any(action.action_type == "move_unit" for action in obs.legal_actions)
assert any(action.action_type == "set_city_production" for action in obs.legal_actions)
assert any(action.action_type == "set_research" for action in obs.legal_actions)
assert "Turn 15" in obs.summary
assert "Legal actions exposed" in obs.summary