44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""Tests for the Ollama provider's parsing logic and registry wiring."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from physcom.llm.providers.ollama import OllamaLLMProvider
|
|
|
|
|
|
@pytest.fixture
|
|
def provider():
|
|
return OllamaLLMProvider()
|
|
|
|
|
|
def test_parse_json_strips_fences(provider):
|
|
text = '```json\n{"power_density": 500.0, "safety": 0.7}\n```'
|
|
result = provider._parse_json(text, ["power_density", "safety"])
|
|
assert result == {"power_density": 500.0, "safety": 0.7}
|
|
|
|
|
|
def test_parse_json_falls_back_on_invalid(provider):
|
|
result = provider._parse_json("not json", ["power_density", "safety"])
|
|
assert result == {"power_density": 0.5, "safety": 0.5}
|
|
|
|
|
|
def test_parse_verdict_plausible(provider):
|
|
assert provider._parse_verdict("blah blah\nVERDICT: PLAUSIBLE") is True
|
|
|
|
|
|
def test_parse_verdict_implausible(provider):
|
|
assert provider._parse_verdict("blah blah\nVERDICT: IMPLAUSIBLE") is False
|
|
|
|
|
|
def test_registry_builds_ollama_provider(monkeypatch):
|
|
from physcom.llm.registry import build_llm_provider
|
|
|
|
monkeypatch.setenv("LLM_PROVIDER", "ollama")
|
|
monkeypatch.setenv("OLLAMA_MODEL", "phi4:14b")
|
|
monkeypatch.setenv("OLLAMA_HOST", "http://example:1234")
|
|
provider = build_llm_provider()
|
|
assert isinstance(provider, OllamaLLMProvider)
|
|
assert provider._model == "phi4:14b"
|
|
assert provider._host == "http://example:1234"
|