Spaces:
Sleeping
Sleeping
File size: 1,649 Bytes
f0d0d63 | 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | import json
from server.environment import NationOpenEnv
from server.models import NationAction, NationObservation, NationState
def assert_json_serializable(value: object) -> None:
json.dumps(value)
def test_openenv_wrapper_resets_steps_and_serializes_state() -> None:
env = NationOpenEnv()
reset_observation = env.reset(seed=123, episode_id="integration-smoke")
phase_2 = env.step(NationAction(actions=[]))
debate = env.step(
NationAction(
actions={
"type": "DEBATE",
"agent_id": "Health",
"message": "Health expects demand pressure this quarter.",
}
)
)
assert isinstance(reset_observation, NationObservation)
assert isinstance(env.state, NationState)
assert phase_2.state["phase"] == 2
assert debate.info["accepted_actions"][0]["type"] == "DEBATE"
assert not debate.done
assert_json_serializable(reset_observation.model_dump(mode="json"))
assert_json_serializable(debate.model_dump(mode="json"))
assert_json_serializable(env.state.model_dump(mode="json"))
def test_openenv_wrapper_supports_direct_allocation_smoke_round() -> None:
env = NationOpenEnv()
observation = env.reset(seed=7)
allocations = {
department: sector["demand"] * 1.1
for department, sector in observation.state["sectors"].items()
}
result = env.step(NationAction(direct_allocations=allocations))
assert result.state["round"] == 1
assert result.state["last_total_allocation"] > 0
assert result.reward is not None
assert_json_serializable(result.model_dump(mode="json"))
|