mirror of https://github.com/talgo-cloud/bimg.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
2.3 KiB
120 lines
2.3 KiB
package bimg
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
)
|
|
|
|
func TestVipsRead(t *testing.T) {
|
|
files := []struct {
|
|
name string
|
|
expected ImageType
|
|
}{
|
|
{"test.jpg", JPEG},
|
|
{"test.png", PNG},
|
|
{"test.webp", WEBP},
|
|
}
|
|
|
|
for _, file := range files {
|
|
image, imageType, _ := vipsRead(readImage(file.name))
|
|
if image == nil {
|
|
t.Fatal("Empty image")
|
|
}
|
|
if imageType != file.expected {
|
|
t.Fatal("Invalid image type")
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestVipsSave(t *testing.T) {
|
|
image, _, _ := vipsRead(readImage("test.jpg"))
|
|
options := vipsSaveOptions{Quality: 95, Type: JPEG, Interlace: true}
|
|
|
|
buf, err := vipsSave(image, options)
|
|
if err != nil {
|
|
t.Fatal("Cannot save the image")
|
|
}
|
|
if len(buf) == 0 {
|
|
t.Fatal("Empty image")
|
|
}
|
|
}
|
|
|
|
func TestVipsRotate(t *testing.T) {
|
|
image, _, _ := vipsRead(readImage("test.jpg"))
|
|
|
|
newImg, err := vipsRotate(image, D90)
|
|
if err != nil {
|
|
t.Fatal("Cannot save the image")
|
|
}
|
|
|
|
buf, _ := vipsSave(newImg, vipsSaveOptions{Quality: 95})
|
|
if len(buf) == 0 {
|
|
t.Fatal("Empty image")
|
|
}
|
|
}
|
|
|
|
func TestVipsZoom(t *testing.T) {
|
|
image, _, _ := vipsRead(readImage("test.jpg"))
|
|
|
|
newImg, err := vipsRotate(image, D90)
|
|
if err != nil {
|
|
t.Fatal("Cannot save the image")
|
|
}
|
|
|
|
buf, _ := vipsSave(newImg, vipsSaveOptions{Quality: 95})
|
|
if len(buf) == 0 {
|
|
t.Fatal("Empty image")
|
|
}
|
|
}
|
|
|
|
func TestVipsWatermark(t *testing.T) {
|
|
image, _, _ := vipsRead(readImage("test.jpg"))
|
|
|
|
watermark := Watermark{
|
|
Text: "Copy me if you can",
|
|
Font: "sans bold 12",
|
|
Opacity: 0.5,
|
|
Width: 200,
|
|
DPI: 100,
|
|
Margin: 100,
|
|
Background: Color{255, 255, 255},
|
|
}
|
|
|
|
newImg, err := vipsWatermark(image, watermark)
|
|
if err != nil {
|
|
t.Errorf("Cannot add watermark: %s", err)
|
|
}
|
|
|
|
buf, _ := vipsSave(newImg, vipsSaveOptions{Quality: 95})
|
|
if len(buf) == 0 {
|
|
t.Fatal("Empty image")
|
|
}
|
|
}
|
|
|
|
func TestVipsImageType(t *testing.T) {
|
|
imgType := vipsImageType(readImage("test.jpg"))
|
|
if imgType != JPEG {
|
|
t.Fatal("Invalid image type")
|
|
}
|
|
}
|
|
|
|
func TestVipsMemory(t *testing.T) {
|
|
mem := VipsMemory()
|
|
|
|
if mem.Memory < 1024 {
|
|
t.Fatal("Invalid memory")
|
|
}
|
|
if mem.Allocations == 0 {
|
|
t.Fatal("Invalid memory allocations")
|
|
}
|
|
}
|
|
|
|
func readImage(file string) []byte {
|
|
img, _ := os.Open(path.Join("fixtures", file))
|
|
buf, _ := ioutil.ReadAll(img)
|
|
defer img.Close()
|
|
return buf
|
|
}
|