Files
OpenOPC/tests/test_task_router.py
2026-07-01 17:56:31 +08:00

54 lines
1.6 KiB
Python

from __future__ import annotations
import unittest
from opc.core.models import ExecutionMode
from opc.layer1_perception.context_loader import LoadedContext
from opc.layer1_perception.task_router import TaskRouter
class _StubLLM:
def __init__(self) -> None:
self.called = False
async def simple_chat(self, prompt: str, system: str, task_type: str) -> str:
_ = (prompt, system, task_type)
self.called = True
return "{}"
class TaskRouterTests(unittest.IsolatedAsyncioTestCase):
async def test_route_returns_default_task_mode_without_llm_call(self) -> None:
llm = _StubLLM()
router = TaskRouter(llm)
decision = await router.route("build a local product", LoadedContext())
self.assertEqual(decision.mode, ExecutionMode.TASK_MODE)
self.assertEqual(decision.domains, ["general"])
self.assertFalse(llm.called)
async def test_route_ignores_context_and_preferences(self) -> None:
llm = _StubLLM()
router = TaskRouter(llm)
context = LoadedContext()
context.session_execution_defaults = {
"mode": "company_mode",
"company_profile": "corporate",
"preferred_agent": "codex",
}
decision = await router.route(
"continue the current project",
context,
preferences={"mode": "company_mode"},
)
self.assertEqual(decision.mode, ExecutionMode.TASK_MODE)
self.assertEqual(decision.domains, ["general"])
self.assertFalse(llm.called)
if __name__ == "__main__":
unittest.main()