"""Tests for repository structure and package layout.""" from __future__ import annotations from pathlib import Path ROOT = Path(__file__).parent.parent def test_src_directory_exists() -> None: assert (ROOT / "src").is_dir() def test_all_src_modules_exist() -> None: expected = [ "src/__init__.py", "src/models.py", "src/protocol.py", "src/physics.py", "src/city_schema.py", "src/state_machine.py", "src/api.py", "src/rewards.py", "src/phraseology.py", "src/openenv_environment.py", ] for path in expected: assert (ROOT / path).is_file(), f"Missing: {path}" def test_tasks_subpackage_exists() -> None: assert (ROOT / "src/tasks").is_dir() expected = [ "src/tasks/__init__.py", "src/tasks/registry.py", "src/tasks/single_incident.py", "src/tasks/multi_incident.py", "src/tasks/mass_casualty.py", "src/tasks/shift_surge.py", ] for path in expected: assert (ROOT / path).is_file(), f"Missing: {path}" def test_server_subpackage_exists() -> None: assert (ROOT / "src/server").is_dir() expected = [ "src/server/__init__.py", "src/server/app.py", "src/server/requirements.txt", "src/server/Dockerfile", ] for path in expected: assert (ROOT / path).is_file(), f"Missing: {path}" def test_visualizer_subpackage_exists() -> None: assert (ROOT / "src/visualizer").is_dir() expected = [ "src/visualizer/__init__.py", "src/visualizer/viewer.py", ] for path in expected: assert (ROOT / path).is_file(), f"Missing: {path}" def test_pyproject_toml_exists() -> None: assert (ROOT / "pyproject.toml").is_file() def test_openenv_yaml_exists() -> None: assert (ROOT / "openenv.yaml").is_file() def test_src_package_importable() -> None: import src assert hasattr(src, "__version__") def test_all_src_modules_importable() -> None: modules = [ "src.models", "src.protocol", "src.physics", "src.city_schema", "src.state_machine", "src.api", "src.rewards", "src.phraseology", "src.openenv_environment", ] for name in modules: import importlib assert importlib.import_module(name) is not None