Spaces:
Sleeping
Sleeping
| """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 | |