1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2026-04-23 19:41:06 +02:00
Files
imgproxy/processing/padding_test.go
T

91 lines
1.6 KiB
Go

package processing_test
import (
"bytes"
"fmt"
"testing"
"github.com/stretchr/testify/suite"
)
type PaddingTestSuite struct {
testSuite
}
type paddingTestCase struct {
dpr float64
paddingTop int
paddingRight int
paddingBottom int
paddingLeft int
}
func (r paddingTestCase) ImagePath() string {
return "geometry.png"
}
func (r paddingTestCase) URLOptions() string {
return fmt.Sprintf(
"dpr:%f/padding:%d:%d:%d:%d/background:f00/enlarge:1", // enlarge:1 for dpr > 1
r.dpr,
r.paddingTop,
r.paddingRight,
r.paddingBottom,
r.paddingLeft,
)
}
func (r paddingTestCase) String() string {
var b bytes.Buffer
fmt.Fprintf(&b, "dpr_%g", r.dpr)
fmt.Fprintf(&b, "_pad_%d_%d_%d_%d", r.paddingTop, r.paddingRight, r.paddingBottom, r.paddingLeft)
return b.String()
}
func (s *PaddingTestSuite) TestPadding() {
testCases := []testCase[paddingTestCase]{
{
opts: paddingTestCase{
dpr: 0.5,
paddingLeft: 10,
paddingTop: 20,
paddingRight: 30,
paddingBottom: 40,
},
outSize: testSize{120, 80},
},
{
opts: paddingTestCase{
dpr: 1,
paddingLeft: 10,
paddingTop: 20,
paddingRight: 30,
paddingBottom: 40,
},
outSize: testSize{240, 160},
},
{
opts: paddingTestCase{
dpr: 2,
paddingLeft: 10,
paddingTop: 20,
paddingRight: 30,
paddingBottom: 40,
},
outSize: testSize{480, 320},
},
}
for _, tc := range testCases {
s.Run(tc.opts.String(), func() {
s.processImageAndCheck(tc)
})
}
}
func TestPadding(t *testing.T) {
suite.Run(t, new(PaddingTestSuite))
}