Spaces:
Sleeping
Sleeping
Download tests/test_graders.py from prathvi9607/SupportOps: direct link, hf CLI and curl.
- Browser
- Download file 2.7 kB
-
https://huggingface.co/spaces/prathvi9607/SupportOps/resolve/main/tests/test_graders.py
- Command line
-
hf download hf://spaces/prathvi9607/SupportOps/tests/test_graders.py
-
curl -L -o test_graders.py https://huggingface.co/spaces/prathvi9607/SupportOps/resolve/main/tests/test_graders.py
2.7 kB
| """ | |
| Tests for grading system. | |
| """ | |
| import pytest | |
| from env.environment import SupportOpsArena | |
| from env.actions import ActionType | |
| from adversary.adversary import AdaptiveAdversary | |
| from graders.programmatic import ProgrammaticGrader | |
| from graders.adversarial_grader import aggregate_scores | |
| class TestProgrammaticGrader: | |
| """Test programmatic grader functionality.""" | |
| async def test_grader_initialization(self): | |
| """Test grader can be created.""" | |
| grader = ProgrammaticGrader() | |
| assert grader is not None | |
| async def test_grade_complete_episode(self): | |
| """Test grading a complete episode.""" | |
| adversary = AdaptiveAdversary() | |
| env = SupportOpsArena(adversary=adversary) | |
| await env.reset(task_level="easy", seed=42) | |
| # Run a simple episode | |
| await env.step(ActionType.INSPECT_LOGS) | |
| await env.step(ActionType.CHECK_AUTHENTICATION) | |
| await env.step(ActionType.INSPECT_NETWORK) | |
| await env.step(ActionType.RESOLVE_TICKET) | |
| # Grade episode | |
| state = await env.state() | |
| grader = ProgrammaticGrader() | |
| result = await grader.grade(state) | |
| assert result.score >= 0.0 | |
| assert result.score <= 1.0 | |
| assert result.action_sequence_safe is not None | |
| assert result.step_budget_respected is not None | |
| async def test_grade_score_range(self): | |
| """Test grade score is in valid range.""" | |
| adversary = AdaptiveAdversary() | |
| env = SupportOpsArena(adversary=adversary) | |
| await env.reset(task_level="easy", seed=42) | |
| # Take minimal actions | |
| await env.step(ActionType.INSPECT_LOGS) | |
| await env.step(ActionType.RESOLVE_TICKET) | |
| state = await env.state() | |
| grader = ProgrammaticGrader() | |
| result = await grader.grade(state) | |
| assert 0.0 <= result.score <= 1.0 | |
| class TestScoreAggregation: | |
| """Test score aggregation logic.""" | |
| def test_aggregate_easy(self): | |
| """Test aggregation for easy task (programmatic only).""" | |
| score = aggregate_scores(0.75, None, None, "easy") | |
| assert score == 0.75 | |
| def test_aggregate_medium(self): | |
| """Test aggregation for medium task (programmatic + LLM).""" | |
| score = aggregate_scores(0.75, 0.60, None, "medium") | |
| assert 0.65 < score < 0.75 # Weighted average | |
| def test_aggregate_hard(self): | |
| """Test aggregation for hard task (all graders).""" | |
| score = aggregate_scores(0.75, 0.60, 0.50, "hard") | |
| assert 0.5 < score < 0.75 # Weighted average | |