| from env import WildfireEnv |
| from env.briefing import briefing_to_text |
| from env.serialization import serialize_observation |
| from agents.heuristic_agent import HeuristicAgent |
|
|
|
|
| def test_briefing_generated_on_reset(): |
| env = WildfireEnv() |
| obs = env.reset(task_id="medium", seed=42) |
| assert obs.briefing is not None, "Briefing should be present on first obs" |
| assert len(obs.briefing.priority_populated_zones) >= 1, "Should have at least 1 priority zone" |
| assert obs.briefing.incident_id != "" |
| assert obs.briefing.ignition_cause != "" |
|
|
|
|
| def test_briefing_adherence_bonus(): |
| env = WildfireEnv() |
| agent = HeuristicAgent() |
| obs = env.reset(task_id="easy", seed=42) |
|
|
| total_reward = 0.0 |
| while not env.done: |
| action = agent.act(obs) |
| result = env.step(action) |
| total_reward += result.reward |
| obs = result.observation |
|
|
| final = env.state() |
| pop_lost = final.get("population_lost", 0) |
| |
| if pop_lost == 0: |
| assert total_reward > 5.0, ( |
| f"Expected reward > 5.0 (includes +1 briefing bonus) but got {total_reward}" |
| ) |
|
|
|
|
| def test_briefing_in_serialized_prompt(): |
| env = WildfireEnv() |
| obs = env.reset(task_id="medium", seed=42) |
| text = serialize_observation(obs, 0, 150) |
| assert "OPERATIONAL BRIEFING" in text, "Briefing header missing from serialized prompt" |
| assert "PRIORITY 1" in text |
| assert "Commander's intent" in text |
|
|