79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
from nodes import (
|
|
AUDIO_NAMES,
|
|
PICTURE_NAMES,
|
|
VIDEO_NAMES,
|
|
H3PromptIDE,
|
|
H3PromptReferenceInputs,
|
|
)
|
|
|
|
|
|
def output_values(result):
|
|
return tuple(result)
|
|
|
|
|
|
def test_prompt_ide_returns_plain_string_unchanged():
|
|
prompt = "Use <Picture 1>.\n<d>Hello.</d>"
|
|
assert output_values(H3PromptIDE.execute(prompt))[0] == prompt
|
|
|
|
|
|
def test_reference_bundle_uses_h3_media_order():
|
|
result = H3PromptReferenceInputs.execute(
|
|
pictures={
|
|
"<Picture 3>": "third",
|
|
"<Picture 1>": "first",
|
|
"<Picture 2>": None,
|
|
},
|
|
videos={"<Video 2>": "second-video", "<Video 1>": "first-video"},
|
|
audios={"<Audio 2>": "second-audio", "<Audio 1>": "first-audio"},
|
|
)
|
|
bundle = output_values(result)[0]
|
|
assert [(item["token"], item["image"]) for item in bundle["pictures"]] == [
|
|
("<Picture 1>", "first"),
|
|
("<Picture 3>", "third"),
|
|
]
|
|
assert [(item["token"], item["frames"]) for item in bundle["videos"]] == [
|
|
("<Video 1>", "first-video"),
|
|
("<Video 2>", "second-video"),
|
|
]
|
|
assert [(item["token"], item["audio"]) for item in bundle["audios"]] == [
|
|
("<Audio 1>", "first-audio"),
|
|
("<Audio 2>", "second-audio"),
|
|
]
|
|
|
|
|
|
def test_reference_bundle_allows_every_media_group_to_be_empty():
|
|
bundle = output_values(H3PromptReferenceInputs.execute())[0]
|
|
assert bundle == {
|
|
"pictures": [],
|
|
"videos": [],
|
|
"audios": [],
|
|
"references": [],
|
|
}
|
|
|
|
|
|
def test_h3_exposes_native_media_names():
|
|
assert PICTURE_NAMES == [f"<Picture {index}>" for index in range(1, 10)]
|
|
assert VIDEO_NAMES == [f"<Video {index}>" for index in range(1, 4)]
|
|
assert AUDIO_NAMES == [f"<Audio {index}>" for index in range(1, 7)]
|
|
|
|
|
|
def test_schema_uses_h3_names_and_one_raw_authoring_link():
|
|
reference_inputs = H3PromptReferenceInputs.INPUT_TYPES()
|
|
assert set(reference_inputs.get("required", {})) == set()
|
|
assert set(reference_inputs["optional"]) == {"pictures", "videos", "audios"}
|
|
expected_names = {
|
|
"pictures": PICTURE_NAMES,
|
|
"videos": VIDEO_NAMES,
|
|
"audios": AUDIO_NAMES,
|
|
}
|
|
for group, names in expected_names.items():
|
|
template = reference_inputs["optional"][group][1]["template"]
|
|
assert template["names"] == names
|
|
assert template["min"] == 0
|
|
assert not any(name.startswith("ref_") for name in template["names"])
|
|
|
|
editor_inputs = H3PromptIDE.INPUT_TYPES()
|
|
assert set(editor_inputs["required"]) == {"prompt"}
|
|
assert set(editor_inputs["optional"]) == {"references"}
|
|
assert editor_inputs["optional"]["references"][1]["rawLink"] is True
|