neuralcad / tests /test_types.py
CallMeDaniel's picture
refactor: remove duplicate AgentResponse/ChatResult dataclasses from core/types
6657e32
"""Tests for core/types.py — enums and ABC."""
import pytest
from core.types import BackendName, AgentId, LLMBackend
from agents.definitions import AgentDef
class TestEnums:
def test_backend_names(self):
assert BackendName.MOCK == "mock"
assert BackendName.ANTHROPIC == "anthropic"
assert BackendName.OPENAI == "openai"
assert BackendName.GEMINI == "gemini"
def test_agent_ids(self):
assert AgentId.DESIGN == "design"
assert AgentId.ENGINEERING == "engineering"
assert AgentId.CNC == "cnc"
assert AgentId.CAD == "cad"
def test_backend_name_is_string(self):
assert isinstance(BackendName.MOCK, str)
assert BackendName.MOCK in {"mock", "anthropic"}
class TestAgentDefModel:
def test_create(self):
ad = AgentDef(id="design", name="Design", role="Designer", color="#fff", avatar="D", goal="g", backstory="b")
assert ad.id == "design"
assert ad.name == "Design"
def test_model_dump(self):
ad = AgentDef(id="cad", name="CAD", role="Coder", color="#000", avatar="C", goal="g", backstory="b")
d = ad.model_dump()
assert d["id"] == "cad"
assert "role" in d
class TestLLMBackendABC:
def test_cannot_instantiate(self):
with pytest.raises(TypeError):
LLMBackend()
def test_subclass_must_implement_generate(self):
class Incomplete(LLMBackend):
pass
with pytest.raises(TypeError):
Incomplete()
def test_subclass_with_generate(self):
class Complete(LLMBackend):
def generate(self, messages):
return "ok"
b = Complete()
assert b.generate([]) == "ok"
def test_split_system_message(self):
msgs = [
{"role": "system", "content": "You are a bot"},
{"role": "user", "content": "hello"},
]
system, rest = LLMBackend.split_system_message(msgs)
assert system == "You are a bot"
assert len(rest) == 1
assert rest[0]["role"] == "user"
def test_split_system_message_no_system(self):
msgs = [{"role": "user", "content": "hello"}]
system, rest = LLMBackend.split_system_message(msgs)
assert system == ""
assert len(rest) == 1