| from env.curriculum import CurriculumController |
|
|
|
|
| def test_promotion_fires_at_threshold(): |
| ctrl = CurriculumController(start_tier="easy") |
| for _ in range(10): |
| result = ctrl.after_episode(5.0) |
| assert ctrl.get_tier() == "medium" |
| assert len(ctrl.promotion_log) == 1 |
| assert ctrl.promotion_log[0][1] == "medium" |
|
|
|
|
| def test_no_premature_promotion(): |
| ctrl = CurriculumController(start_tier="easy") |
| for _ in range(5): |
| ctrl.after_episode(5.0) |
| assert ctrl.get_tier() == "easy" |
|
|
|
|
| def test_demotion_on_collapse(): |
| ctrl = CurriculumController(start_tier="easy") |
| |
| for _ in range(10): |
| ctrl.after_episode(5.0) |
| assert ctrl.get_tier() == "medium" |
| |
| for _ in range(10): |
| ctrl.after_episode(0.5) |
| assert ctrl.get_tier() == "easy" |
|
|
|
|
| def test_history_tracking(): |
| ctrl = CurriculumController(start_tier="easy") |
| |
| for _ in range(10): |
| ctrl.after_episode(5.0) |
| |
| for _ in range(10): |
| ctrl.after_episode(4.0) |
| history = ctrl.get_history() |
| assert len(history) == 20 |
| assert any(t == "easy" for _, t, _ in history) |
| assert any(t == "medium" for _, t, _ in history) |
| assert len(ctrl.promotion_log) >= 1 |
|
|