package imagerequest import ( "errors" "testing" ) func TestValidateImageRequest(t *testing.T) { t.Parallel() tests := []struct { name string req Request wantErr error }{ { name: "within bounds", req: Request{Transform: Transform{ Size: Size{Width: 800, Height: 600}, FitMode: FitCover, }}, }, { name: "original size and empty fit", req: Request{Transform: Transform{Size: Size{Width: 0, Height: 0}}}, }, { name: "width over limit", req: Request{Transform: Transform{ Size: Size{Width: MaxDimension + 1, Height: 600}, }}, wantErr: ErrDimensionTooLarge, }, { name: "height over limit", req: Request{Transform: Transform{ Size: Size{Width: 800, Height: MaxDimension + 1}, }}, wantErr: ErrDimensionTooLarge, }, { name: "negative width", req: Request{Transform: Transform{Size: Size{Width: -1, Height: 600}}}, wantErr: ErrInvalidSize, }, { name: "invalid fit mode", req: Request{Transform: Transform{ Size: Size{Width: 800, Height: 600}, FitMode: "bogus", }}, wantErr: ErrInvalidFitMode, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { t.Parallel() err := ValidateImageRequest(&tt.req) if tt.wantErr == nil { if err != nil { t.Fatalf("ValidateImageRequest() error = %v, want nil", err) } return } if !errors.Is(err, tt.wantErr) { t.Fatalf("ValidateImageRequest() error = %v, want %v", err, tt.wantErr) } }) } }