Spaces:
Running
Running
File size: 1,723 Bytes
8485798 c01667e 8485798 c01667e 8485798 c01667e 8485798 c01667e 8485798 c01667e 8485798 c01667e 8485798 c01667e 8485798 c01667e 8485798 | 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 | # 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"])
|