Download test_app.py from barakplasma/schedule_constraint_solving: direct link, hf CLI and curl.
- Browser
- Download file 2.5 kB
-
https://huggingface.co/spaces/barakplasma/schedule_constraint_solving/resolve/main/test_app.py
- Command line
-
hf download hf://spaces/barakplasma/schedule_constraint_solving/test_app.py
-
curl -L -o test_app.py https://huggingface.co/spaces/barakplasma/schedule_constraint_solving/resolve/main/test_app.py
2.5 kB
| 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 | |