package imgcache import ( "errors" "testing" ) func TestValidateImageRequest(t *testing.T) { t.Parallel() tests := []struct { name string req ImageRequest wantErr error }{ { name: "within bounds", req: ImageRequest{Size: Size{Width: 800, Height: 600}, FitMode: FitCover}, }, { name: "original size and empty fit", req: ImageRequest{Size: Size{Width: 0, Height: 0}}, }, { name: "width over limit", req: ImageRequest{Size: Size{Width: MaxDimension + 1, Height: 600}}, wantErr: ErrDimensionTooLarge, }, { name: "height over limit", req: ImageRequest{Size: Size{Width: 800, Height: MaxDimension + 1}}, wantErr: ErrDimensionTooLarge, }, { name: "negative width", req: ImageRequest{Size: Size{Width: -1, Height: 600}}, wantErr: ErrInvalidSize, }, { name: "invalid fit mode", req: ImageRequest{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) } }) } }