Files

56 lines
2.2 KiB
Python

from vivid_solution_prompt_analysis_and_replacement import (
PromptReplaceParserNode,
parse_override_text,
parse_source,
)
def test_parse_source_from_json_string():
source = '{"转换描述": {"目标": "构建现代建筑", "环境": "城市广场"}, "类型选择": "精细模型"}'
desc, style = parse_source(source)
assert desc["目标"] == "构建现代建筑"
assert desc["环境"] == "城市广场"
assert style == "精细模型"
def test_parse_source_from_python_dict_string():
source = "{'转换描述': {'目标': '建筑重构', '光影': '清晨侧光'}, '类型选择': '体块模型'}"
desc, style = parse_source(source)
assert desc["目标"] == "建筑重构"
assert desc["光影"] == "清晨侧光"
assert style == "体块模型"
def test_parse_override_text_partial_labels():
override_text = "环境:滨水平台。\n光影:黄昏侧光。\n"
result = parse_override_text(override_text)
assert result["环境"] == "滨水平台。"
assert result["光影"] == "黄昏侧光。"
def test_run_prefers_valid_chinese_override_and_falls_back_to_source():
node = PromptReplaceParserNode()
source = "目标:构建现代建筑\n环境:城市广场\n光影:清晨侧光\n类型选择:精细模型"
override = "环境:滨水平台\n"
prompt_list, prompt_text, style_text = node.run(source, override)
assert prompt_list == [
"目标:构建现代建筑。",
"环境:滨水平台。",
"光影:清晨侧光。",
]
assert prompt_text == "目标:构建现代建筑。\n环境:滨水平台。\n光影:清晨侧光。"
assert style_text == "精细模型"
def test_run_ignores_non_chinese_override_for_field_and_style():
node = PromptReplaceParserNode()
source = "目标:建筑方案\n环境:城市广场\n类型选择:精细模型"
override = "环境: plaza\n类型选择: photo\n"
prompt_list, prompt_text, style_text = node.run(source, override)
assert prompt_list == [
"目标:建筑方案。",
"环境:城市广场。",
]
assert prompt_text == "目标:建筑方案。\n环境:城市广场。"
assert style_text == "精细模型"