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