71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
"""
|
|
千问附件文本:只整理抽出原文,不算缺项。
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import sys
|
|
import unittest
|
|
|
|
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
|
if ROOT not in sys.path:
|
|
sys.path.insert(0, ROOT)
|
|
|
|
from agent.llm.mode_attachment_text import invoke_attachment_text, invoke_shell
|
|
from agent.llm.modes import LlmMode
|
|
|
|
|
|
class ModeAttachmentTextTests(unittest.TestCase):
|
|
def test_shell_uses_raw_text(self) -> None:
|
|
got = invoke_shell(payload={"raw_text": "海运 宁波到汉堡 1x40HQ"})
|
|
self.assertTrue(got["ok"])
|
|
self.assertIn("宁波到汉堡", got["text"])
|
|
self.assertFalse(got["empty"])
|
|
|
|
def test_blank_is_empty(self) -> None:
|
|
got = invoke_shell(payload={"assistant_text": " "})
|
|
self.assertTrue(got["ok"])
|
|
self.assertTrue(got["empty"])
|
|
|
|
def test_injected_chat_gets_raw_only(self) -> None:
|
|
seen: dict = {}
|
|
|
|
class _R:
|
|
ok = True
|
|
content = "海运 上海到洛杉矶"
|
|
error = ""
|
|
|
|
def chat(**kwargs):
|
|
seen.update(kwargs)
|
|
return _R()
|
|
|
|
got = invoke_attachment_text(
|
|
payload={"raw_text": "# 询价\n海运\t上海到洛杉矶"},
|
|
chat_fn=chat,
|
|
allow_network=False,
|
|
)
|
|
self.assertTrue(got["ok"])
|
|
self.assertEqual(got["text"], "海运 上海到洛杉矶")
|
|
self.assertEqual(seen["mode"], LlmMode.ATTACHMENT_TEXT)
|
|
sys_msg = seen["messages"][0]["content"]
|
|
self.assertIn("不要猜", sys_msg)
|
|
self.assertNotIn("缺项", seen["messages"][1]["content"] or "x")
|
|
|
|
def test_chat_fail(self) -> None:
|
|
class _R:
|
|
ok = False
|
|
content = ""
|
|
error = "timeout"
|
|
|
|
got = invoke_attachment_text(
|
|
payload={"raw_text": "海运"},
|
|
chat_fn=lambda **_k: _R(),
|
|
)
|
|
self.assertFalse(got["ok"])
|
|
self.assertEqual(got["error"], "timeout")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|