dnd5-scripts/generate_encounter/tests/test_generate_encounter.py

61 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import sys
from pathlib import Path
scripts_path = Path(__file__).resolve().parent.parent.parent
if str(scripts_path) not in sys.path:
sys.path.insert(0, str(scripts_path))
enc_path = Path(__file__).resolve().parent.parent
if str(enc_path) not in sys.path:
sys.path.insert(0, str(enc_path))
from gen_encounter import generate_encounter
# ----------------------------------------------- Тесты Генерации Энкаунтеров ------------------------------------------------------------
def test_encounter_default():
"""
Проверяет базовую генерацию случайной встречи с настройками по умолчанию.
Возвращает непустую строку-отчет.
"""
result = generate_encounter("тест", [{}])
assert isinstance(result, str)
assert "Встреча №1" in result
assert "**Уровень группы:** 1" in result
def test_encounter_specific_biome():
"""
Проверяет генерацию встречи для конкретного биома, уровня и типа PvP.
Гарантирует, что параметры запроса применяются корректно.
"""
req = {
"environment": "urban",
"level": 5,
"encounter_type": "PvP"
}
result = generate_encounter("тест", [req])
assert isinstance(result, str)
assert "**Биом:** Urban" in result
assert "**Тип встречи:** PvP" in result
assert "**Уровень группы:** 5" in result
def test_encounter_planar_world():
"""
Проверяет планарные миры. Биом должен игнорироваться при выборе таблиц.
Вывод должен содержать информацию о мире/плане.
"""
req = {
"world": "feywild",
"level": 8
}
result = generate_encounter("тест", [req])
assert isinstance(result, str)
assert "**Мир/План:** feywild" in result
assert "**Уровень группы:** 8" in result
if __name__ == "__main__":
test_encounter_default()
test_encounter_specific_biome()
test_encounter_planar_world()
print("Все тесты generate_encounter успешно пройдены!")