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) } }