//go:build cgo package transform_test import ( "image" "image/color" "image/jpeg" "bytes" "testing" "atp.pics/internal/transform" ) func makeJPEG(w, h int) []byte { img := image.NewRGBA(image.Rect(0, 0, w, h)) for y := range h { for x := range w { img.Set(x, y, color.RGBA{R: 100, G: 150, B: 200, A: 255}) } } var buf bytes.Buffer _ = jpeg.Encode(&buf, img, &jpeg.Options{Quality: 90}) return buf.Bytes() } func TestTransform_ProportionalResize_WidthOnly(t *testing.T) { src := makeJPEG(400, 200) out, ct, err := transform.Transform(src, "image/jpeg", transform.Params{Width: 200, Format: "webp"}) if err != nil { t.Fatalf("Transform error: %v", err) } if ct != "image/webp" { t.Errorf("Content-Type = %q, want image/webp", ct) } if len(out) == 0 { t.Error("output is empty") } } func TestTransform_ProportionalResize_HeightOnly(t *testing.T) { src := makeJPEG(400, 200) out, ct, err := transform.Transform(src, "image/jpeg", transform.Params{Height: 100, Format: "webp"}) if err != nil { t.Fatalf("Transform error: %v", err) } if ct != "image/webp" { t.Errorf("Content-Type = %q, want image/webp", ct) } if len(out) == 0 { t.Error("output is empty") } } func TestTransform_CoverFit_BothDimensions(t *testing.T) { src := makeJPEG(400, 200) out, ct, err := transform.Transform(src, "image/jpeg", transform.Params{Width: 100, Height: 100, Format: "webp"}) if err != nil { t.Fatalf("Transform error: %v", err) } if ct != "image/webp" { t.Errorf("Content-Type = %q, want image/webp", ct) } if len(out) == 0 { t.Error("output is empty") } } func TestTransform_JPEG_Output(t *testing.T) { src := makeJPEG(200, 200) out, ct, err := transform.Transform(src, "image/jpeg", transform.Params{Width: 100, Height: 100, Quality: 80, Format: "jpg"}) if err != nil { t.Fatalf("Transform error: %v", err) } if ct != "image/jpeg" { t.Errorf("Content-Type = %q, want image/jpeg", ct) } if len(out) == 0 { t.Error("output is empty") } } func TestTransform_PNG_Output(t *testing.T) { src := makeJPEG(200, 200) out, ct, err := transform.Transform(src, "image/jpeg", transform.Params{Width: 100, Height: 100, Format: "png"}) if err != nil { t.Fatalf("Transform error: %v", err) } if ct != "image/png" { t.Errorf("Content-Type = %q, want image/png", ct) } if len(out) == 0 { t.Error("output is empty") } } func TestTransform_NoResize_DefaultDimensions(t *testing.T) { src := makeJPEG(300, 150) out, ct, err := transform.Transform(src, "image/jpeg", transform.Params{Format: "webp", Quality: 85}) if err != nil { t.Fatalf("Transform error: %v", err) } if ct != "image/webp" { t.Errorf("Content-Type = %q, want image/webp", ct) } if len(out) == 0 { t.Error("output is empty") } }