mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-13 21:33:32 +08:00
118 lines
3.3 KiB
Python
118 lines
3.3 KiB
Python
import pytest
|
|
from llm.core.types import (
|
|
LLMInput,
|
|
LLMOutput,
|
|
Message,
|
|
ModelInfo,
|
|
ProviderType,
|
|
Role,
|
|
ToolCall,
|
|
ToolDefinition,
|
|
ToolResult,
|
|
)
|
|
|
|
|
|
class TestRole:
|
|
def test_role_values(self):
|
|
assert Role.SYSTEM.value == "system"
|
|
assert Role.USER.value == "user"
|
|
assert Role.ASSISTANT.value == "assistant"
|
|
assert Role.TOOL.value == "tool"
|
|
|
|
|
|
class TestProviderType:
|
|
def test_provider_values(self):
|
|
assert ProviderType.CLAUDE.value == "claude"
|
|
assert ProviderType.OPENAI.value == "openai"
|
|
assert ProviderType.OLLAMA.value == "ollama"
|
|
|
|
|
|
class TestMessage:
|
|
def test_create_message(self):
|
|
msg = Message(role=Role.USER, content="Hello")
|
|
assert msg.role == Role.USER
|
|
assert msg.content == "Hello"
|
|
assert msg.name is None
|
|
assert msg.tool_call_id is None
|
|
|
|
def test_message_to_dict(self):
|
|
msg = Message(role=Role.USER, content="Hello", name="test")
|
|
result = msg.to_dict()
|
|
assert result["role"] == "user"
|
|
assert result["content"] == "Hello"
|
|
assert result["name"] == "test"
|
|
|
|
|
|
class TestToolDefinition:
|
|
def test_create_tool(self):
|
|
tool = ToolDefinition(
|
|
name="search",
|
|
description="Search the web",
|
|
parameters={"type": "object", "properties": {}},
|
|
)
|
|
assert tool.name == "search"
|
|
assert tool.strict is True
|
|
|
|
def test_tool_to_dict(self):
|
|
tool = ToolDefinition(
|
|
name="search",
|
|
description="Search",
|
|
parameters={"type": "object"},
|
|
)
|
|
result = tool.to_dict()
|
|
assert result["name"] == "search"
|
|
assert result["strict"] is True
|
|
|
|
|
|
class TestToolCall:
|
|
def test_create_tool_call(self):
|
|
tc = ToolCall(id="1", name="search", arguments={"query": "test"})
|
|
assert tc.id == "1"
|
|
assert tc.name == "search"
|
|
assert tc.arguments == {"query": "test"}
|
|
|
|
|
|
class TestToolResult:
|
|
def test_create_tool_result(self):
|
|
result = ToolResult(tool_call_id="1", content="result")
|
|
assert result.tool_call_id == "1"
|
|
assert result.is_error is False
|
|
|
|
|
|
class TestLLMInput:
|
|
def test_create_input(self):
|
|
messages = [Message(role=Role.USER, content="Hello")]
|
|
input_obj = LLMInput(messages=messages, temperature=0.7)
|
|
assert len(input_obj.messages) == 1
|
|
assert input_obj.temperature == 0.7
|
|
|
|
def test_input_to_dict(self):
|
|
messages = [Message(role=Role.USER, content="Hello")]
|
|
input_obj = LLMInput(messages=messages)
|
|
result = input_obj.to_dict()
|
|
assert "messages" in result
|
|
assert result["temperature"] == 1.0
|
|
|
|
|
|
class TestLLMOutput:
|
|
def test_create_output(self):
|
|
output = LLMOutput(content="Hello!")
|
|
assert output.content == "Hello!"
|
|
assert output.has_tool_calls is False
|
|
|
|
def test_output_with_tool_calls(self):
|
|
tc = ToolCall(id="1", name="search", arguments={})
|
|
output = LLMOutput(content="", tool_calls=[tc])
|
|
assert output.has_tool_calls is True
|
|
|
|
|
|
class TestModelInfo:
|
|
def test_create_model_info(self):
|
|
info = ModelInfo(
|
|
name="gpt-4",
|
|
provider=ProviderType.OPENAI,
|
|
)
|
|
assert info.name == "gpt-4"
|
|
assert info.supports_tools is True
|
|
assert info.supports_vision is False
|