| from env import WildfireEnv |
| from env.serialization import serialize_observation |
|
|
|
|
| def test_serialize_produces_all_sections(fresh_env): |
| obs = fresh_env.reset(task_id="easy", seed=42) |
| text = serialize_observation(obs, step_num=0, max_steps=80) |
| for section in ["SITUATION:", "GRID SUMMARY", "RESOURCES:", "RECENT EVENTS:", "Available actions:"]: |
| assert section in text, f"Missing section: {section}" |
|
|
|
|
| def test_serialize_handles_fog_of_war(fresh_env): |
| obs = fresh_env.reset(task_id="hard", seed=42) |
| text = serialize_observation(obs, step_num=0, max_steps=300) |
| assert "[?]" in text, "Expected fog-of-war marker [?] in hard tier output" |
|
|
|
|
| def test_serialize_length_under_2048_tokens(fresh_env): |
| for tier, max_steps in [("easy", 80), ("medium", 150), ("hard", 300)]: |
| obs = fresh_env.reset(task_id=tier, seed=42) |
| text = serialize_observation(obs, step_num=0, max_steps=max_steps) |
| word_count = len(text.split()) |
| assert word_count < 1500, ( |
| f"Tier {tier}: serialized prompt too long ({word_count} words, limit 1500)" |
| ) |
|
|