mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2026-06-18 23:39:34 +00:00
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
"""Unit tests for the ModelRouter routing + fallback logic."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from core.config.models import (
|
|
FALLBACK_CHAIN,
|
|
TASK_ROUTING,
|
|
Provider,
|
|
Task,
|
|
get_fallbacks,
|
|
get_provider_for_task,
|
|
)
|
|
|
|
|
|
def test_every_task_has_provider():
|
|
for task in Task:
|
|
assert task in TASK_ROUTING, f"Task {task} has no routing"
|
|
assert isinstance(TASK_ROUTING[task], Provider)
|
|
|
|
|
|
def test_every_provider_has_fallback_chain():
|
|
for provider in Provider:
|
|
assert provider in FALLBACK_CHAIN
|
|
chain = FALLBACK_CHAIN[provider]
|
|
assert provider not in chain, f"{provider} should not fallback to itself"
|
|
assert all(isinstance(p, Provider) for p in chain)
|
|
|
|
|
|
def test_get_provider_for_task():
|
|
assert get_provider_for_task(Task.REASONING) == Provider.ANTHROPIC
|
|
assert get_provider_for_task(Task.ARABIC_TASKS) == Provider.GLM
|
|
assert get_provider_for_task(Task.CODE) == Provider.DEEPSEEK
|
|
assert get_provider_for_task(Task.CLASSIFICATION) == Provider.GROQ
|
|
assert get_provider_for_task(Task.RESEARCH) == Provider.GEMINI
|
|
|
|
|
|
def test_get_fallbacks_returns_list():
|
|
fallbacks = get_fallbacks(Provider.ANTHROPIC)
|
|
assert isinstance(fallbacks, list)
|
|
assert len(fallbacks) > 0
|