"""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"