Скорректирован сценарий запуска, исправление бага с предметом
This commit is contained in:
@@ -14,7 +14,7 @@ def lessons(text):
|
||||
|
||||
def one(text):
|
||||
ls = parse_lesson_cell(text)
|
||||
assert len(ls) == 1, f"ожидалося 1 занятие, got: {ls}"
|
||||
assert len(ls) == 1, f"ожидалось 1 занятие, got: {ls}"
|
||||
return ls[0].to_dict()
|
||||
|
||||
|
||||
@@ -295,6 +295,53 @@ def test_lesson_with_red_between_lessons():
|
||||
assert ls[1]["subject"] == "Язык UML и CASE-системы"
|
||||
|
||||
|
||||
# --- оторвавшиеся пустой строкой преподаватель/аудитория ---------------------------
|
||||
|
||||
|
||||
def test_room_detached_by_blank_line():
|
||||
# ПИЭ-31БО, вторник: «ауд.210» оторвана пустой строкой от предмета
|
||||
result = one("Программная инженерия\nЛарина Ю.А.\n\n ауд.210")
|
||||
assert result["subject"] == "Программная инженерия"
|
||||
assert result["teacher"] == "Ларина Ю.А."
|
||||
assert result["room"] == "ауд. 210"
|
||||
|
||||
|
||||
def test_teacher_and_room_detached_by_red_note():
|
||||
# ИВТ-13БО, четверг: красная заметка снята со своей строки, осталась пустая
|
||||
raw = f"Практикум по матанализу\n{R}пара для тех кто не ТОП{Cc}\nШабаршина Г.В.\nауд. 219"
|
||||
result = one(raw)
|
||||
assert result["subject"] == "Практикум по матанализу"
|
||||
assert result["teacher"] == "Шабаршина Г.В."
|
||||
assert result["room"] == "ауд. 219"
|
||||
assert result["note"] == "пара для тех кто не ТОП"
|
||||
|
||||
|
||||
def test_detached_room_inherits_marker():
|
||||
ls = lessons("к.в. - 2\nФизика\nИванов И.И.\n\nауд. 301")
|
||||
assert len(ls) == 1
|
||||
assert ls[0]["marker"] == "к.в. - 2"
|
||||
assert ls[0]["room"] == "ауд. 301"
|
||||
|
||||
|
||||
def test_detached_room_kept_if_prev_has_room():
|
||||
ls = lessons("Физика\nСмирнов А.В.\nауд. 221\n\nауд. 222")
|
||||
assert len(ls) == 2
|
||||
assert ls[0]["room"] == "ауд. 221"
|
||||
|
||||
|
||||
def test_detached_teacher_kept_if_prev_has_teacher():
|
||||
ls = lessons("Физика\nСмирнов А.В.\nауд. 221\n\nПетров П.П.\nауд. 222")
|
||||
assert len(ls) == 2
|
||||
assert ls[0]["teacher"] == "Смирнов А.В."
|
||||
|
||||
|
||||
def test_lesson_after_detached_room_starts_fresh():
|
||||
ls = lessons("Физика\nСмирнов А.В.\n\nауд. 221\n\nХимия\nПетров П.П.\nауд. 222")
|
||||
assert len(ls) == 2
|
||||
assert ls[0]["room"] == "ауд. 221"
|
||||
assert ls[1]["subject"] == "Химия"
|
||||
|
||||
|
||||
# --- пустые и экзотические ----------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
@@ -145,6 +145,18 @@ def test_teacher_room_index(data):
|
||||
assert room_301["2"]["ч"][0]["groups"] == ["ИВТ-11БО"]
|
||||
|
||||
|
||||
def test_room_index_detached_room():
|
||||
"""Аудитория, оторванная пустой строкой, попадает в индекс с предметом и преподавателем."""
|
||||
sheets = fixture_sheets()
|
||||
sheets[parsing.MAIN_SHEET].rows[6][7] = "Химия\nПетров П.П.\n\n ауд. 201"
|
||||
data = parsing.parse_schedule(make_sheets(sheets))
|
||||
_, rooms = parsing.build_teacher_room_index(data)
|
||||
entry = rooms["ауд. 201"]["вторник"]["1"]["ч"][0]
|
||||
assert entry["subject"] == "Химия"
|
||||
assert entry["teacher"] == "Петров П.П."
|
||||
assert entry["groups"] == ["ИТ-12БО"]
|
||||
|
||||
|
||||
def test_day_times(data):
|
||||
times = parsing.build_day_times(data)
|
||||
assert times["понедельник"] == {"1": "9:00-10:35", "2": "10:45-12:20"}
|
||||
|
||||
Reference in New Issue
Block a user