Spaces:
Running
Running
| # tests/test_graders.py — Run: python -m pytest tests/ -v | |
| import sys, os | |
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| from server.graders.grader_easy import grade_easy | |
| from server.graders.grader_medium import grade_medium | |
| from server.graders.grader_hard import grade_hard | |
| from server.tasks.task_easy import EASY_TASKS | |
| from server.tasks.task_medium import MEDIUM_TASKS | |
| from server.tasks.task_hard import HARD_TASKS | |
| def test_task_counts(): | |
| assert len(EASY_TASKS) == 15 | |
| assert len(MEDIUM_TASKS) == 15 | |
| assert len(HARD_TASKS) == 15 | |
| def test_easy_correct_scores_1(): | |
| for t in EASY_TASKS: | |
| r, _, _, _, _ = grade_easy(t["fixed_code"], t) | |
| assert r == 1.0, f"{t['task_id']} expected 1.0 got {r}" | |
| def test_medium_correct_scores_1(): | |
| for t in MEDIUM_TASKS: | |
| r, _, _, _, _ = grade_medium(t["fixed_code"], t) | |
| assert r == 1.0, f"{t['task_id']} expected 1.0 got {r}" | |
| def test_hard_correct_scores_high(): | |
| for t in HARD_TASKS: | |
| keywords = t.get("explanation_keywords", []) | |
| r, _, _, _, _ = grade_hard(t["fixed_code"], t, " ".join(keywords)) | |
| assert r >= 0.9, f"{t['task_id']} expected >=0.9 got {r}" | |
| def test_reward_in_range(): | |
| for t in EASY_TASKS: | |
| r, _, _, _, _ = grade_easy(t["buggy_code"], t) | |
| assert 0.0 <= r <= 1.0 | |
| def test_buggy_scores_less_than_1(): | |
| for t in EASY_TASKS[:5]: | |
| r, _, _, _, _ = grade_easy(t["buggy_code"], t) | |
| assert r < 1.0, f"{t['task_id']} buggy code should not score 1.0" | |
| def test_empty_code_returns_zero(): | |
| r, _, _, _, _ = grade_easy("", EASY_TASKS[0]) | |
| assert r == 0.0 | |
| if __name__ == "__main__": | |
| import pytest | |
| pytest.main([__file__, "-v"]) | |