Files
codex-bot d6ee8942f1
Foundry Go checks / check (push) Successful in 2m40s
Foundry Go checks / check (pull_request) Successful in 2m36s
Implement Canvas V2 subgraphs, assets and asynchronous AI execution
2026-11-06 18:36:00 +08:00

42 lines
1.0 KiB
Go

package platform
import (
"bytes"
"image"
"image/color"
"image/gif"
"image/jpeg"
"image/png"
"testing"
)
func TestAssetDecodersUseActualContent(t *testing.T) {
im := image.NewRGBA(image.Rect(0, 0, 3, 2))
im.Set(1, 1, color.RGBA{R: 255, A: 255})
for _, format := range []string{"png", "jpeg", "gif"} {
var encoded bytes.Buffer
var err error
switch format {
case "png":
err = png.Encode(&encoded, im)
case "jpeg":
err = jpeg.Encode(&encoded, im, nil)
case "gif":
err = gif.Encode(&encoded, im, nil)
}
if err != nil {
t.Fatal(err)
}
mime, width, height, err := inspectAsset(encoded.Bytes())
if err != nil || mime != "image/"+format || width != 3 || height != 2 {
t.Fatalf("%s decoded %s %dx%d: %v", format, mime, width, height, err)
}
if _, _, _, err := inspectAsset(encoded.Bytes()[:len(encoded.Bytes())/2]); err == nil {
t.Errorf("truncated %s accepted", format)
}
}
if _, _, _, err := inspectAsset([]byte("<svg xmlns='http://www.w3.org/2000/svg'></svg>")); err == nil {
t.Fatal("SVG accepted")
}
}