初始化提交

This commit is contained in:
chenxin committed 2026-08-21 16:00:13 +08:00
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": []}) == []