37 lines
1.5 KiB
Go
37 lines
1.5 KiB
Go
package prompt
|
|
|
|
import "testing"
|
|
|
|
func TestAssembleManualPromptNormalizesMaterialsAndWarnings(t *testing.T) {
|
|
result := Assemble(Input{Mode: "image", ManualPrompt: " use @图片2 and @视频1 ", Materials: []Material{
|
|
{URL: "/b.mp4", Type: "video"}, {URL: "/a.png", Type: "image"}, {URL: "/empty", Type: ""}, {URL: "", Type: "image"},
|
|
}})
|
|
if result.Prompt != "use @图片2 and @视频1" || result.Requirements.Image != 2 || result.Requirements.Video != 1 {
|
|
t.Fatalf("unexpected result %#v", result)
|
|
}
|
|
if len(result.Materials) != 3 || result.Materials[0].Label != "@图片1" || result.Materials[1].Label != "@图片2" || result.Materials[2].Label != "@视频1" {
|
|
t.Fatalf("materials %#v", result.Materials)
|
|
}
|
|
if len(result.Warnings) != 0 {
|
|
t.Fatalf("warnings %#v", result.Warnings)
|
|
}
|
|
}
|
|
|
|
func TestAssembleDefaultsImageAndVideoScenes(t *testing.T) {
|
|
image := Assemble(Input{Mode: "image", ProjectName: " 项目 ", AspectRatio: "16:9"})
|
|
if image.Blocked || len(image.Scenes) != 5 || image.Prompt == "" || image.Requirements.Image != 4 {
|
|
t.Fatalf("image %#v", image)
|
|
}
|
|
video := Assemble(Input{Mode: "video", ProjectName: "项目"})
|
|
if len(video.Scenes) != 5 || video.Requirements.Image != 5 {
|
|
t.Fatalf("video %#v", video)
|
|
}
|
|
}
|
|
|
|
func TestExtractRequirementsDeduplicatesAliases(t *testing.T) {
|
|
requirements := ExtractRequirements("@图2 @图片2 @参考视频3 @视频1 @音频4 @图片0")
|
|
if requirements.Image != 2 || requirements.Video != 3 || requirements.Audio != 4 {
|
|
t.Fatalf("requirements %#v", requirements)
|
|
}
|
|
}
|