74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package media
|
|
|
|
import (
|
|
"image"
|
|
"image/color"
|
|
"testing"
|
|
|
|
pkgmedia "spark-server/internal/pkg/media"
|
|
)
|
|
|
|
func TestCompressImageDownscales(t *testing.T) {
|
|
img := image.NewRGBA(image.Rect(0, 0, 2000, 1000))
|
|
for y := 0; y < 1000; y++ {
|
|
for x := 0; x < 2000; x++ {
|
|
img.Set(x, y, color.RGBA{R: uint8(x % 255), G: uint8(y % 255), B: 40, A: 255})
|
|
}
|
|
}
|
|
src, err := EncodePNG(img)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
opt := &Options{Limits: pkgmedia.DefaultLimits(), JPEGQuality: 80}
|
|
res, err := CompressImage(src, opt)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if pkgmedia.LongestEdge(res.Width, res.Height) > pkgmedia.DefaultImageMaxEdge {
|
|
t.Fatalf("edge %dx%d still over 1080", res.Width, res.Height)
|
|
}
|
|
if res.MIME != "image/jpeg" {
|
|
t.Fatalf("mime %s", res.MIME)
|
|
}
|
|
small := image.NewRGBA(image.Rect(0, 0, 100, 80))
|
|
smallSrc, err := EncodePNG(small)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
def := &Options{Limits: pkgmedia.DefaultLimits()}
|
|
keep, err := CompressImage(smallSrc, def)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if keep.Width != 100 || keep.Height != 80 {
|
|
t.Fatalf("should keep small image dims, got %dx%d", keep.Width, keep.Height)
|
|
}
|
|
}
|
|
|
|
func TestCompressAvatar(t *testing.T) {
|
|
img := image.NewRGBA(image.Rect(0, 0, 500, 500))
|
|
src, err := EncodePNG(img)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
res, err := CompressAvatar(src, &Options{Limits: pkgmedia.DefaultLimits()})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if pkgmedia.LongestEdge(res.Width, res.Height) > pkgmedia.DefaultAvatarMaxEdge {
|
|
t.Fatalf("avatar %dx%d", res.Width, res.Height)
|
|
}
|
|
}
|
|
|
|
func TestPrepareBotImage(t *testing.T) {
|
|
img := image.NewRGBA(image.Rect(0, 0, 1600, 900))
|
|
src, err := EncodePNG(img)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
a, err := PrepareBotImage(src, &Options{Limits: pkgmedia.DefaultLimits()})
|
|
if err != nil || a == nil || a.Size <= 0 {
|
|
t.Fatalf("%+v %v", a, err)
|
|
}
|
|
}
|