"""Tests for entity combat stats.""" from unittest.mock import AsyncMock, MagicMock import pytest from mudlib.entity import Entity, Mob from mudlib.player import Player @pytest.fixture def mock_writer(): writer = MagicMock() writer.write = MagicMock() writer.drain = AsyncMock() return writer @pytest.fixture def mock_reader(): return MagicMock() def test_entity_has_combat_stats(): """Test that Entity has PL and stamina stats.""" entity = Entity(name="Test", x=0, y=0) assert entity.pl == 100.0 assert entity.stamina == 100.0 assert entity.max_stamina == 100.0 assert entity.defense_locked_until == 0.0 def test_entity_combat_stats_can_be_customized(): """Test that combat stats can be set on initialization.""" entity = Entity(name="Weak", x=0, y=0, pl=50.0, stamina=30.0, max_stamina=30.0) assert entity.pl == 50.0 assert entity.stamina == 30.0 assert entity.max_stamina == 30.0 def test_mob_inherits_combat_stats(): """Test that Mob inherits combat stats from Entity.""" mob = Mob(name="Goku", x=10, y=10, description="A powerful fighter") assert mob.pl == 100.0 assert mob.stamina == 100.0 assert mob.max_stamina == 100.0 def test_mob_combat_stats_can_be_customized(): """Test that Mob can have custom combat stats.""" mob = Mob( name="Boss", x=5, y=5, description="Strong", pl=200.0, max_stamina=150.0, stamina=150.0, ) assert mob.pl == 200.0 assert mob.stamina == 150.0 assert mob.max_stamina == 150.0 def test_player_inherits_combat_stats(mock_reader, mock_writer): """Test that Player inherits combat stats from Entity.""" player = Player(name="Hero", x=0, y=0, reader=mock_reader, writer=mock_writer) assert player.pl == 100.0 assert player.stamina == 100.0 assert player.max_stamina == 100.0 def test_player_combat_stats_can_be_customized(mock_reader, mock_writer): """Test that Player can have custom combat stats.""" player = Player( name="Veteran", x=0, y=0, reader=mock_reader, writer=mock_writer, pl=150.0, stamina=120.0, max_stamina=120.0, ) assert player.pl == 150.0 assert player.stamina == 120.0 assert player.max_stamina == 120.0