56 lines
2.2 KiB
Python
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 == "精细模型"
|