初始化提交
This commit is contained in:
commit
887c1f449e
963 files changed
+166869
No files matched your search
@@ -0,0 +1,70 @@
|
||||
"""角色卡字段映射单元测试。"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from app.modules.imports.card_parser import CharacterCard
|
||||
from app.modules.imports.mapping import (
|
||||
card_to_daoti,
|
||||
card_to_profile,
|
||||
character_book_to_entries,
|
||||
)
|
||||
|
||||
|
||||
def _card(**kw: object) -> CharacterCard:
|
||||
base: dict[str, object] = {"spec_version": "2.0", "name": "狂三"}
|
||||
base.update(kw)
|
||||
return CharacterCard(**base) # type: ignore[arg-type]
|
||||
|
||||
|
||||
def test_profile_maps_core_fields() -> None:
|
||||
card = _card(
|
||||
description="desc",
|
||||
scenario="sch",
|
||||
first_mes="hi",
|
||||
tags=["a"],
|
||||
creator="X",
|
||||
character_version="1",
|
||||
)
|
||||
profile = card_to_profile(card)
|
||||
assert profile["background"] == "desc"
|
||||
assert profile["scenario"] == "sch"
|
||||
assert profile["first_mes"] == "hi"
|
||||
assert profile["tags"] == ["a"]
|
||||
assert profile["source_meta"]["creator"] == "X"
|
||||
assert profile["source_meta"]["spec_version"] == "2.0"
|
||||
|
||||
|
||||
def test_profile_preserves_system_prompt_and_extensions() -> None:
|
||||
card = _card(system_prompt="SP", extensions={"foo": {"bar": 1}})
|
||||
profile = card_to_profile(card)
|
||||
assert profile["system_prompt"] == "SP"
|
||||
assert profile["st_extensions"] == {"foo": {"bar": 1}}
|
||||
|
||||
|
||||
def test_daoti_personality_as_initial_summary() -> None:
|
||||
assert card_to_daoti(_card(personality="腹黑优雅"))["personality_summary"] == "腹黑优雅"
|
||||
|
||||
|
||||
def test_daoti_empty_personality_is_none() -> None:
|
||||
assert card_to_daoti(_card())["personality_summary"] is None
|
||||
|
||||
|
||||
def test_book_to_entries_maps_fields() -> None:
|
||||
book = {
|
||||
"entries": [
|
||||
{"keys": ["猫"], "content": "喜欢猫", "position": "after_char", "constant": True},
|
||||
{"keys": ["时间"], "content": "时间能力", "priority": 5},
|
||||
]
|
||||
}
|
||||
entries = character_book_to_entries(book)
|
||||
assert len(entries) == 2
|
||||
assert entries[0]["keys"] == ["猫"]
|
||||
assert entries[0]["constant"] is True
|
||||
assert entries[1]["priority"] == 5
|
||||
assert entries[1]["position"] == "after_char" # 默认
|
||||
|
||||
|
||||
def test_book_none_or_empty() -> None:
|
||||
assert character_book_to_entries(None) == []
|
||||
assert character_book_to_entries({}) == []
|
||||
assert character_book_to_entries({"entries": []}) == []
|
||||
Reference in new issue
Block a user