Spaces:
Sleeping
Sleeping
| """Test grading engine.""" | |
| import pytest | |
| from trace.graders import Grader | |
| def test_grader_success_max_efficiency(): | |
| """Test grader with success and max efficiency.""" | |
| grader = Grader("easy_cpu_spike") | |
| grade = grader.grade( | |
| incident_resolved=True, | |
| steps_taken=1 # Very efficient | |
| ) | |
| assert grade.score > 0.9, "Should be high score" | |
| assert grade.success is True | |
| assert grade.efficiency >= 0.8 | |
| def test_grader_success_poor_efficiency(): | |
| """Test grader with success but poor efficiency.""" | |
| grader = Grader("easy_cpu_spike") | |
| grade = grader.grade( | |
| incident_resolved=True, | |
| steps_taken=5 # At max | |
| ) | |
| assert grade.score == 0.6, f"Expected 0.6, got {grade.score}" | |
| assert grade.success is True | |
| assert grade.efficiency == 0.0 | |
| def test_grader_failure(): | |
| """Test grader when incident not resolved.""" | |
| grader = Grader("hard_mixed") | |
| grade = grader.grade( | |
| incident_resolved=False, | |
| steps_taken=3 | |
| ) | |
| # Score = 0.6*0 + 0.4*(1 - 3/8) = 0.25 (efficiency still contributes) | |
| assert grade.score == 0.25, f"Expected 0.25, got {grade.score}" | |
| assert grade.success is False | |
| def test_grader_tasks_have_different_max_steps(): | |
| """Test that tasks have correct max_steps.""" | |
| graders = { | |
| "easy_cpu_spike": Grader("easy_cpu_spike"), | |
| "medium_cascade": Grader("medium_cascade"), | |
| "hard_mixed": Grader("hard_mixed"), | |
| } | |
| assert graders["easy_cpu_spike"].max_steps == 5 | |
| assert graders["medium_cascade"].max_steps == 7 | |
| assert graders["hard_mixed"].max_steps == 8 | |