File size: 1,515 Bytes
363abf3 | 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 | 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)
# On easy with heuristic seed=42, all pop should be saved -> briefing bonus applies
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
|