2026-06-26 13:10:50 +00:00
|
|
|
"""Tests for LLM model recommendation helpers."""
|
|
|
|
|
|
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
from strix.config.models import RECOMMENDED_MODEL_NAMES, is_recommended_or_frontier_model
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("model_name", RECOMMENDED_MODEL_NAMES)
|
|
|
|
|
def test_recommended_models_are_accepted(model_name: str) -> None:
|
|
|
|
|
assert is_recommended_or_frontier_model(model_name)
|
|
|
|
|
|
|
|
|
|
|
2026-06-26 13:19:09 +00:00
|
|
|
def test_recommended_models_are_matched_case_insensitively() -> None:
|
|
|
|
|
assert is_recommended_or_frontier_model("Vertex_AI/Gemini-3-Pro-Preview")
|
|
|
|
|
|
|
|
|
|
|
2026-06-26 13:10:50 +00:00
|
|
|
@pytest.mark.parametrize(
|
|
|
|
|
"model_name",
|
|
|
|
|
[
|
|
|
|
|
"gpt-5.4",
|
|
|
|
|
"litellm/openai/gpt-5.4",
|
|
|
|
|
"anthropic/claude-opus-4-1",
|
|
|
|
|
"any-llm/anthropic/claude-sonnet-4-6",
|
|
|
|
|
"vertex_ai/gemini-3-pro-preview",
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
def test_frontier_model_families_are_accepted(model_name: str) -> None:
|
|
|
|
|
assert is_recommended_or_frontier_model(model_name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
|
|
|
"model_name",
|
|
|
|
|
[
|
|
|
|
|
"",
|
|
|
|
|
"openai/gpt-4.1",
|
|
|
|
|
"anthropic/claude-3-5-sonnet-latest",
|
|
|
|
|
"ollama/llama3.1",
|
|
|
|
|
"deepseek/deepseek-chat",
|
2026-06-26 13:19:09 +00:00
|
|
|
"custom-ollama/gpt-5-mini-local",
|
2026-06-26 13:10:50 +00:00
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
def test_non_frontier_models_are_rejected(model_name: str) -> None:
|
|
|
|
|
assert not is_recommended_or_frontier_model(model_name)
|