File size: 1,533 Bytes
ddbc1ba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import pytest
from core.task import TaskGenerator

def test_task_solvability():
    """Verify that the task goal is achievable through the provided routes."""
    gen = TaskGenerator()
    task = gen.get_random_task()
    
    # Check that at least one success condition key appears in some route consequence
    success_keys = [cond["key"] for cond in task.success_conditions]
    consequence_keys = []
    for route in task.viable_routes:
        consequence_keys.extend(route.consequences.keys())
        
    reachable = any(sk in consequence_keys for sk in success_keys)
    assert reachable, f"Task {task.id} success conditions {success_keys} are not reachable by any route consequences"

def test_task_generation_validity():
    """Verify that the TaskGenerator produces tasks with valid structures (routes, milestones)."""
    gen = TaskGenerator()
    task = gen.get_random_task()
    
    assert task.goal is not None
    assert len(task.viable_routes) > 0
    assert len(task.milestones) > 0
    
    # Check that at least one route has valid action types
    sample_route = task.viable_routes[0]
    assert len(sample_route.required_action_types) > 0

def test_task_diversity():
    """Verify that the task pool contains at least 2 distinct task types (deterministic)."""
    gen = TaskGenerator()
    # Instantiate every task factory directly — no random luck needed
    all_ids = set(factory().id for factory in gen.tasks)
    assert len(all_ids) > 1, "TaskGenerator pool must contain at least 2 distinct task types"