Files
NianAIGC/backend/internal/prompt/assembler_test.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)
}
}