File size: 1,098 Bytes
8dc7642
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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