File size: 2,499 Bytes
dc7b320 7725750 f572466 7725750 d484982 7725750 d484982 7725750 d484982 7725750 d484982 7725750 dc7b320 f572466 7725750 d484982 7725750 dc7b320 f572466 7725750 dc7b320 f572466 7725750 d484982 7725750 dc7b320 2c888f0 f572466 2c888f0 d484982 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
from app import parse_requirements, parse_tasks, solve_all_tasks, generate_mermaid_gantt
from datetime import datetime
def test_parse_requirements_with_spaces() -> None:
reqs = [
"take out trash requires bag",
"Dinner requires Shopping",
"Make sandwich requires bread",
]
dependencies, all_tasks, original_names = parse_requirements(reqs)
assert set(all_tasks) == {
"take_out_trash",
"bag",
"dinner",
"shopping",
"make_sandwich",
"bread",
}
assert dependencies["take_out_trash"] == ["bag"]
assert dependencies["dinner"] == ["shopping"]
assert dependencies["make_sandwich"] == ["bread"]
assert original_names["take_out_trash"] == "take out trash"
def test_parse_tasks_and_original_names() -> None:
txt = "Wash dishes\nTake out trash, Make sandwich "
tasks, originals = parse_tasks(txt)
assert set(tasks) == {"wash_dishes", "take_out_trash", "make_sandwich"}
assert originals["take_out_trash"] == "Take out trash"
assert originals["make_sandwich"] == "Make sandwich"
assert originals["wash_dishes"] == "Wash dishes"
def test_solve_all_tasks_simple() -> None:
reqs = ["a requires b", "b requires c"]
dependencies, all_tasks, _ = parse_requirements(reqs)
result = solve_all_tasks(dependencies, all_tasks)
assert result == ["c", "b", "a"]
def test_solve_all_tasks_with_spaces() -> None:
reqs = ["Do homework requires eat dinner", "eat dinner requires cook"]
dependencies, all_tasks, _ = parse_requirements(reqs)
result = solve_all_tasks(dependencies, all_tasks)
assert result == ["cook", "eat_dinner", "do_homework"]
# def test_solve_maximum_subset_cycle():
# reqs = ["a requires b", "b requires c", "c requires a", "d requires c"]
# dependencies, all_tasks, _ = parse_requirements(reqs)
# result = solve_maximum_subset(dependencies, all_tasks)
# # Only d can run because a<->b<->c form a cycle
# assert result == ["d"]
def test_generate_mermaid_gantt_minutes() -> None:
order = ["a", "b", "c"]
names = {"a": "Alpha", "b": "Beta", "c": "Gamma"}
durations = {"a": 15, "b": 30, "c": 45}
base = datetime(2024, 1, 1, 8, 0)
gantt = generate_mermaid_gantt(order, names, durations=durations, start_time=base)
assert "dateFormat YYYY-MM-DD HH:mm" in gantt
assert "A : a, 2024-01-01 08:00, 15m" in gantt
assert "B : b, after a, 30m" in gantt
assert "C : c, after b, 45m" in gantt
|