amogus/tests/test_fog_of_war.py
Antigravity 071906df59 feat: Complete LLM agent framework with fog-of-war, meeting flow, and prompt assembly
- Core engine: simulator, game mechanics, triggers (138 tests)
- Fog-of-war per-player state tracking
- Meeting flow: interrupt, discussion, voting, consolidation
- Prompt assembler with strategy injection tiers
- LLM client with fallbacks for models without JSON/system support
- Prompt templates: action, discussion, voting, reflection
- Full integration in main.py orchestrator
- Verified working with free OpenRouter models (Gemma)
2026-02-01 00:00:34 -05:00

106 lines
3.4 KiB
Python

"""
Tests for the fog-of-war system.
"""
import unittest
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from src.engine.fog_of_war import FogOfWarManager, PlayerKnowledge, PlayerSighting
class TestPlayerKnowledge(unittest.TestCase):
"""Tests for PlayerKnowledge."""
def setUp(self):
self.pk = PlayerKnowledge(player_id="red")
def test_see_player(self):
self.pk.see_player("blue", "Blue", "cafeteria", 10.0, "walking")
self.assertIn("blue", self.pk.last_seen)
self.assertEqual(self.pk.last_seen["blue"].room_id, "cafeteria")
def test_witness_event(self):
self.pk.witness_event("VENT_WITNESSED", 15.0, {"player": "green"})
self.assertEqual(len(self.pk.witnessed_events), 1)
self.assertEqual(self.pk.witnessed_events[0].event_type, "VENT_WITNESSED")
def test_learn_death(self):
self.pk.learn_death("blue", via="body")
self.assertIn("blue", self.pk.known_dead)
def test_find_body(self):
self.pk.find_body("body_blue", "Blue", "electrical", 20.0)
self.assertIn("body_blue", self.pk.bodies_found)
self.assertIn("blue", self.pk.known_dead)
def test_to_dict_and_from_dict(self):
self.pk.see_player("blue", "Blue", "cafeteria", 10.0)
self.pk.learn_death("green")
data = self.pk.to_dict()
restored = PlayerKnowledge.from_dict(data)
self.assertEqual(restored.player_id, "red")
self.assertIn("blue", restored.last_seen)
self.assertIn("green", restored.known_dead)
class TestFogOfWarManager(unittest.TestCase):
"""Tests for FogOfWarManager."""
def setUp(self):
self.fow = FogOfWarManager()
self.fow.register_player("red")
self.fow.register_player("blue")
def test_register_player(self):
self.assertIsNotNone(self.fow.get_knowledge("red"))
self.assertIsNotNone(self.fow.get_knowledge("blue"))
def test_update_vision(self):
visible = [{"id": "blue", "name": "Blue", "action": "standing"}]
self.fow.update_vision("red", visible, "cafeteria", 10.0)
pk = self.fow.get_knowledge("red")
self.assertIn("blue", pk.last_seen)
def test_witness_vent(self):
self.fow.witness_vent("red", "blue", "Blue", "electrical", "entered", 15.0)
pk = self.fow.get_knowledge("red")
self.assertEqual(len(pk.witnessed_events), 1)
self.assertEqual(pk.witnessed_events[0].event_type, "VENT_WITNESSED")
def test_witness_kill(self):
self.fow.witness_kill("red", "blue", "Blue", "green", "Green", "admin", 20.0)
pk = self.fow.get_knowledge("red")
self.assertIn("green", pk.known_dead)
def test_announce_death(self):
self.fow.announce_death("green", via="meeting")
pk_red = self.fow.get_knowledge("red")
pk_blue = self.fow.get_knowledge("blue")
self.assertIn("green", pk_red.known_dead)
self.assertIn("green", pk_blue.known_dead)
def test_reset_for_new_game(self):
self.fow.get_knowledge("red").learn_death("blue")
self.fow.reset_for_new_game()
pk = self.fow.get_knowledge("red")
self.assertEqual(len(pk.known_dead), 0)
if __name__ == "__main__":
unittest.main()