package creator import ( "encoding/json" "testing" ) func TestSlicePageUsesEmptyDataArray(t *testing.T) { page, err := slicePage[string](nil, 1, 25) if err != nil { t.Fatal(err) } encoded, err := json.Marshal(page) if err != nil { t.Fatal(err) } if string(encoded) != `{"data":[],"page":1,"page_size":25,"total":0,"has_next":false}` { t.Fatalf("empty page JSON = %s", encoded) } } func TestParseGeneratedRewriteRequiresBoundedJSON(t *testing.T) { title, script, err := parseGeneratedRewrite(`{"title":"新标题","script":"新脚本"}`) if err != nil || title != "新标题" || script != "新脚本" { t.Fatalf("parseGeneratedRewrite() = %q, %q, %v", title, script, err) } for _, content := range []string{ "", "不是 JSON", `{"title":"有标题"}`, `{"title":"标题","script":""}`, } { if _, _, err := parseGeneratedRewrite(content); err == nil { t.Fatalf("parseGeneratedRewrite(%q) accepted invalid output", content) } } } func TestValidateCreatorTags(t *testing.T) { valid := make([]string, 20) for i := range valid { valid[i] = "标签" } if err := validateCreatorTags(valid); err != nil { t.Fatalf("validateCreatorTags(valid) = %v", err) } for name, tags := range map[string][]string{ "too many": append(valid, "额外"), "empty": {""}, "spaced": {" 标签"}, "too long": {string(make([]rune, 33))}, } { if err := validateCreatorTags(tags); err == nil { t.Fatalf("validateCreatorTags(%s) accepted invalid tags", name) } } }