Source code for pyecs.tests.test_entity_manager

from pyecs import StatusCodes
from pyecs.managers.EntityManager import EntityManager


[docs] class TestEntityManagerCreation:
[docs] def test_create_entity_returns_valid_uuid(self): manager = EntityManager() result = manager.create_entity() assert isinstance(result, tuple) assert result[0] == StatusCodes.ENTITY_CREATED assert result[1] in manager.alive_entities
[docs] def test_create_multiple_entities_have_unique_ids(self): manager = EntityManager() entities = [] for _ in range(100): result = manager.create_entity() entities.append(result[1]) assert len(set(entities)) == 100 assert all(manager.is_alive(entity) for entity in entities)
[docs] def test_entities_start_alive(self): manager = EntityManager() result = manager.create_entity() entity = result[1] assert manager.is_alive(entity) is True
[docs] class TestEntityManagerDestruction:
[docs] def test_destroy_entity_marks_as_dead(self): manager = EntityManager() result = manager.create_entity() entity = result[1] destroy_result = manager.destroy_entity(entity) assert destroy_result == StatusCodes.ENTITY_DESTROYED assert manager.is_alive(entity) is False assert entity not in manager.alive_entities
[docs] def test_destroy_nonexistent_entity_returns_failure(self): manager = EntityManager() fake_entity = "00000000-0000-0000-0000-000000000000" result = manager.destroy_entity(fake_entity) assert result == StatusCodes.FAILURE
[docs] def test_destroy_already_dead_entity_returns_failure(self): manager = EntityManager() result = manager.create_entity() entity = result[1] manager.destroy_entity(entity) second_destroy = manager.destroy_entity(entity) assert second_destroy == StatusCodes.FAILURE
[docs] class TestEntityManagerQueries:
[docs] def test_is_alive_returns_true_for_living_entity(self): manager = EntityManager() result = manager.create_entity() entity = result[1] assert manager.is_alive(entity) is True
[docs] def test_is_alive_returns_false_for_dead_entity(self): manager = EntityManager() result = manager.create_entity() entity = result[1] manager.destroy_entity(entity) assert manager.is_alive(entity) is False
[docs] def test_is_alive_returns_false_for_nonexistent_entity(self): manager = EntityManager() fake_entity = "00000000-0000-0000-0000-000000000000" assert manager.is_alive(fake_entity) is False
[docs] def test_is_alive_behaves_correctly_with_lifecycle(self): manager = EntityManager() result = manager.create_entity() entity = result[1] assert manager.is_alive(entity) is True manager.destroy_entity(entity) assert manager.is_alive(entity) is False
[docs] class TestEntityManagerEdgeCases:
[docs] def test_manager_handles_many_entities(self): manager = EntityManager() entities = [] for _ in range(10000): result = manager.create_entity() entities.append(result[1]) assert len(manager.alive_entities) == 10000 assert all(manager.is_alive(entity) for entity in entities)
[docs] def test_manager_reuses_destroyed_entity_slots(self): manager = EntityManager() entities = [] for _ in range(100): result = manager.create_entity() entity = result[1] entities.append(entity) manager.destroy_entity(entity) assert all(e not in manager.alive_entities for e in entities)