[ADD] титульный лист по бланку задания на практику
This commit is contained in:
@@ -231,3 +231,81 @@ def test_ptp_report_has_no_hardcoded_names() -> None:
|
||||
source = inspect.getsource(ptp_report)
|
||||
for forbidden in ("Посевин", "Коновалов", "Камалетдинов", "ИУ9-2"):
|
||||
assert forbidden not in source
|
||||
|
||||
|
||||
PTP_TASK_FM = (
|
||||
"титульник: ptp-task\n"
|
||||
"кафедра: Теоретическая информатика и компьютерные технологии\n"
|
||||
"кафедра_индекс: ИУ9\n"
|
||||
"студент: Булдаков А. С.\n"
|
||||
"студент_полностью: Булдаков Арсений Сергеевич\n"
|
||||
"группа: ИУ9-22Б\n"
|
||||
"предприятие: МГТУ имени Н. Э. Баумана\n"
|
||||
"команда: Система мониторинга радиоэфира\n"
|
||||
"хранилище: https://monitor.yss.su/IU9/radio-serv\n"
|
||||
"руководитель: Посевин Д. П.\n"
|
||||
"дата_выдачи_день: 29\n"
|
||||
"дата_выдачи_месяц: июня\n"
|
||||
"дата_выдачи_год: 2026\n"
|
||||
"пункт_1: Изучить принципы построения систем пеленгации.\n"
|
||||
"пункт_2: Получить задание в составе команды:\n"
|
||||
"пункт_10: Написать отчёт.\n"
|
||||
)
|
||||
|
||||
|
||||
def test_ptp_task_renders_items_in_numeric_order() -> None:
|
||||
"""Пункт 10 идёт после пункта 2, а не между 1 и 2 как при сортировке строк."""
|
||||
tex = render_fm(PTP_TASK_FM)
|
||||
first = tex.index("Изучить принципы построения систем пеленгации.")
|
||||
second = tex.index("Получить задание в составе команды:")
|
||||
third = tex.index("Написать отчёт.")
|
||||
assert first < second < third
|
||||
|
||||
|
||||
def test_ptp_task_requires_items() -> None:
|
||||
with pytest.raises(ValueError, match="пункт_1"):
|
||||
render_fm("титульник: ptp-task\nстудент: Булдаков А. С.\n")
|
||||
|
||||
|
||||
def test_ptp_task_has_blank_furniture() -> None:
|
||||
tex = render_fm(PTP_TASK_FM)
|
||||
for fragment in (
|
||||
"УТВЕРЖДАЮ",
|
||||
"Заведующий кафедрой",
|
||||
"З\\,А\\,Д\\,А\\,Н\\,И\\,Е",
|
||||
"на прохождение учебной практики",
|
||||
"Дата выдачи задания",
|
||||
"Руководитель практики от кафедры",
|
||||
):
|
||||
assert fragment in tex
|
||||
|
||||
|
||||
def test_ptp_task_student_line_carries_group() -> None:
|
||||
tex = render_fm(PTP_TASK_FM)
|
||||
assert "Булдаков Арсений Сергеевич, ИУ9-22Б" in tex
|
||||
|
||||
|
||||
def test_ptp_task_team_line_follows_item_with_colon() -> None:
|
||||
tex = render_fm(PTP_TASK_FM)
|
||||
colon_item = tex.index("Получить задание в составе команды:")
|
||||
team = tex.index("Система мониторинга радиоэфира (хранилище")
|
||||
next_item = tex.index("Написать отчёт.")
|
||||
assert colon_item < team < next_item
|
||||
|
||||
|
||||
def test_ptp_task_has_no_emblem() -> None:
|
||||
"""В бланке задания эмблемы нет."""
|
||||
tex = render_fm(PTP_TASK_FM)
|
||||
titlepage = tex[tex.index("\\begin{titlepage}") : tex.index("\\end{titlepage}")]
|
||||
assert "emblem" not in titlepage
|
||||
|
||||
|
||||
def test_ptp_task_has_no_hardcoded_assignment_text() -> None:
|
||||
"""Пункты задания и имена приходят только из front matter."""
|
||||
import inspect
|
||||
|
||||
from md2gost.latex.titlepages import ptp_task
|
||||
|
||||
source = inspect.getsource(ptp_task)
|
||||
for forbidden in ("Web", "2D-игра", "GitFlic", "Javascript", "Посевин", "Коновалов"):
|
||||
assert forbidden not in source
|
||||
|
||||
Reference in New Issue
Block a user