stevenbooru/vendor/src/github.com/deiwin/imstor/mocks_test.go

85 lines
1.7 KiB
Go

package imstor_test
import (
"image"
"io"
"io/ioutil"
"path/filepath"
"github.com/deiwin/imstor"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var smallImg = image.NewGray16(image.Rect(0, 0, 2, 2))
var largeImg = image.NewGray16(image.Rect(0, 0, 4, 4))
var newSizeImg = image.NewGray16(image.Rect(0, 0, 5, 5))
type png2JPEG struct {
imstor.Format
}
func (f png2JPEG) DecodableMediaType() string {
return "image/png"
}
type jpegFormat struct {
imstor.Format
}
func (f jpegFormat) DecodableMediaType() string {
return "image/jpeg"
}
func (f jpegFormat) Decode(r io.Reader) (image.Image, error) {
bytes, err := ioutil.ReadAll(r)
Expect(err).NotTo(HaveOccurred())
Expect(bytes).To(Equal(data))
return img, nil
}
func (f jpegFormat) EncodedExtension() string {
return "jpg"
}
func (f jpegFormat) Encode(w io.Writer, i image.Image) error {
if i == smallImg {
expectToBeFile(w, "small.jpg")
} else if i == largeImg {
expectToBeFile(w, "large.jpg")
} else if i == img {
expectToBeFile(w, "original.jpg")
} else if i == newSizeImg {
expectToBeFile(w, "newFormat.jpg")
} else {
Fail("an unexpected image")
}
return nil
}
func expectToBeFile(w io.Writer, name string) {
w.Write(data)
path := filepath.Join(tempDir, filepath.FromSlash(folderPath), name)
fileContents, err := ioutil.ReadFile(path)
Expect(err).NotTo(HaveOccurred())
Expect(fileContents).To(Equal(data))
}
type mockResizer struct {
imstor.Resizer
}
func (r mockResizer) Thumbnail(w, h uint, i image.Image) image.Image {
Expect(i).To(Equal(img))
if w == 30 && h == 30 {
return smallImg
} else if w == 300 && h == 300 {
return largeImg
} else if w == 16 && h == 16 {
return newSizeImg
}
Fail("unexpected size")
return nil
}