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("")); err == nil { t.Fatal("SVG accepted") } }