Files
wehub-resource-sync c3bf08ac8d
K8s Workspace Integration Tests / k8s-workspace-tests (push) Waiting to run
Pre-commit / run (ubuntu-latest) (push) Waiting to run
Python Unittest Coverage / test (macos-15, 3.11) (push) Waiting to run
Python Unittest Coverage / test (ubuntu-latest, 3.11) (push) Waiting to run
Python Unittest Coverage / test (windows-latest, 3.11) (push) Waiting to run
Web UI / check (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:39:27 +08:00

272 lines
8.2 KiB
Python

# -*- coding: utf-8 -*-
"""A template test case."""
from unittest.async_case import IsolatedAsyncioTestCase
from utils import AnyString
from agentscope.message import (
UserMsg,
TextBlock,
DataBlock,
URLSource,
Base64Source,
ThinkingBlock,
AssistantMsg,
HintBlock,
Msg,
ToolCallBlock,
ToolResultBlock,
ToolResultState,
)
class MessageTest(IsolatedAsyncioTestCase):
"""The template test case."""
async def test_creating_message(self) -> None:
"""The template test."""
# Test string content
user_msg = UserMsg(name="user", content="hello world")
self.assertDictEqual(
user_msg.model_dump(),
{
"id": AnyString(),
"name": "user",
"role": "user",
"content": [
{
"id": AnyString(),
"text": "hello world",
"type": "text",
},
],
"metadata": {},
"created_at": AnyString(),
"finished_at": AnyString(),
"usage": None,
},
)
# Test list of content
user_msg = UserMsg(
name="user",
content=[TextBlock(text="1"), TextBlock(text="2")],
)
self.assertDictEqual(
user_msg.model_dump(),
{
"id": AnyString(),
"name": "user",
"role": "user",
"content": [
{"type": "text", "text": "1", "id": AnyString()},
{"type": "text", "text": "2", "id": AnyString()},
],
"metadata": {},
"created_at": AnyString(),
"finished_at": AnyString(),
"usage": None,
},
)
# Test DataBlock content
user_msg = UserMsg(
name="user",
content=[
TextBlock(text="1"),
DataBlock(
source=URLSource(
url="https://example.com/image.png",
media_type="image/png",
),
),
DataBlock(
source=Base64Source(
data="iVBORw0KGgoAAAANSUhEUgAAAAUA",
media_type="image/png",
),
),
],
)
self.assertDictEqual(
user_msg.model_dump(),
{
"id": AnyString(),
"name": "user",
"role": "user",
"content": [
{"type": "text", "text": "1", "id": AnyString()},
{
"type": "data",
"id": AnyString(),
"source": {
"type": "url",
"url": "https://example.com/image.png",
"media_type": "image/png",
},
"name": None,
},
{
"type": "data",
"id": AnyString(),
"source": {
"type": "base64",
"data": "iVBORw0KGgoAAAANSUhEUgAAAAUA",
"media_type": "image/png",
},
"name": None,
},
],
"metadata": {},
"created_at": AnyString(),
"finished_at": AnyString(),
"usage": None,
},
)
# Test thinking content
msg = AssistantMsg(
name="assistant",
content=[ThinkingBlock(thinking="thinking...")],
)
self.assertDictEqual(
msg.model_dump(),
{
"id": AnyString(),
"name": "assistant",
"role": "assistant",
"content": [
{
"type": "thinking",
"thinking": "thinking...",
"id": AnyString(),
},
],
"metadata": {},
"created_at": AnyString(),
"finished_at": None,
"usage": None,
},
)
# Test hint content
msg = AssistantMsg(
name="assistant",
content=[HintBlock(hint="hint...")],
)
self.assertDictEqual(
msg.model_dump(),
{
"id": AnyString(),
"name": "assistant",
"role": "assistant",
"content": [
{
"type": "hint",
"hint": "hint...",
"id": AnyString(),
"source": None,
},
],
"metadata": {},
"created_at": AnyString(),
"finished_at": None,
"usage": None,
},
)
async def test_invalid_message(self) -> None:
"""Test invalid message creation."""
# User message with thinking block should raise ValueError
with self.assertRaises(ValueError):
Msg(
name="user",
role="user",
content=[ThinkingBlock(thinking="thinking...")],
)
# User message with hint block should raise ValueError
with self.assertRaises(ValueError):
Msg(
name="user",
role="user",
content=[HintBlock(hint="hint...")],
)
# User message with tool call block should raise ValueError
with self.assertRaises(ValueError):
Msg(
name="user",
role="user",
content=[ToolCallBlock(id="1", name="tool", input="{}")],
)
# User message with tool result block should raise ValueError
with self.assertRaises(ValueError):
Msg(
name="user",
role="user",
content=[
ToolResultBlock(
id="1",
name="tool",
output="result",
state=ToolResultState.SUCCESS,
),
],
)
# System message with data block should raise ValueError
with self.assertRaises(ValueError):
Msg(
name="system",
role="system",
content=[
DataBlock(
source=URLSource(
url="https://example.com/image.png",
media_type="image/png",
),
),
],
)
# System message with thinking block should raise ValueError
with self.assertRaises(ValueError):
Msg(
name="system",
role="system",
content=[ThinkingBlock(thinking="thinking...")],
)
# System message with hint block should raise ValueError
with self.assertRaises(ValueError):
Msg(
name="system",
role="system",
content=[HintBlock(hint="hint...")],
)
# System message with tool call block should raise ValueError
with self.assertRaises(ValueError):
Msg(
name="system",
role="system",
content=[ToolCallBlock(id="1", name="tool", input="{}")],
)
# System message with tool result block should raise ValueError
with self.assertRaises(ValueError):
Msg(
name="system",
role="system",
content=[
ToolResultBlock(
id="1",
name="tool",
output="result",
state=ToolResultState.SUCCESS,
),
],
)