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.

171 lines
3.6 KiB

package bimg
import (
"io/ioutil"
"os"
"path"
"testing"
)
func TestDeterminateImageType(t *testing.T) {
files := []struct {
name string
expected ImageType
}{
{"test.jpg", JPEG},
{"test.png", PNG},
{"test.webp", WEBP},
{"test.gif", GIF},
{"test.pdf", PDF},
{"test.svg", SVG},
// {"test.jp2", MAGICK},
{"test.heic", HEIF},
{"test2.heic", HEIF},
{"test3.heic", HEIF},
{"test.avif", AVIF},
}
for _, file := range files {
img, _ := os.Open(path.Join("testdata", file.name))
buf, _ := ioutil.ReadAll(img)
defer img.Close()
if VipsIsTypeSupported(file.expected) {
value := DetermineImageType(buf)
if value != file.expected {
t.Fatalf("Image type is not valid: %s != %s, got: %s", file.name, ImageTypes[file.expected], ImageTypes[value])
}
}
}
}
func TestDeterminateImageTypeName(t *testing.T) {
files := []struct {
name string
expected string
}{
{"test.jpg", "jpeg"},
{"test.png", "png"},
{"test.webp", "webp"},
{"test.gif", "gif"},
{"test.pdf", "pdf"},
{"test.svg", "svg"},
// {"test.jp2", "magick"},
{"test.heic", "heif"},
{"test.avif", "avif"},
}
for _, file := range files {
if file.expected == "heif" && VipsMajorVersion <= 8 && VipsMinorVersion < 8 {
continue
}
if file.expected == "avif" && VipsMajorVersion <= 8 && VipsMinorVersion < 9 {
continue
}
img, _ := os.Open(path.Join("testdata", file.name))
buf, _ := ioutil.ReadAll(img)
defer img.Close()
value := DetermineImageTypeName(buf)
if value != file.expected {
t.Fatalf("Image type is not valid: %s != %s, got: %s", file.name, file.expected, value)
}
}
}
func TestIsTypeSupported(t *testing.T) {
types := []struct {
name ImageType
}{
{JPEG}, {PNG}, {WEBP}, {GIF}, {PDF}, {HEIF}, {AVIF},
}
for _, n := range types {
if n.name == HEIF && VipsMajorVersion <= 8 && VipsMinorVersion < 8 {
continue
}
if n.name == AVIF && VipsMajorVersion <= 8 && VipsMinorVersion < 9 {
continue
}
if IsTypeSupported(n.name) == false {
t.Fatalf("Image type %s is not valid", ImageTypes[n.name])
}
}
}
func TestIsTypeNameSupported(t *testing.T) {
types := []struct {
name string
expected bool
}{
{"jpeg", true},
{"png", true},
{"webp", true},
{"gif", true},
{"pdf", true},
{"heif", true},
{"avif", true},
}
for _, n := range types {
if n.name == "heif" && VipsMajorVersion <= 8 && VipsMinorVersion < 8 {
continue
}
if n.name == "avif" && VipsMajorVersion <= 8 && VipsMinorVersion < 9 {
continue
}
if IsTypeNameSupported(n.name) != n.expected {
t.Fatalf("Image type %s is not valid", n.name)
}
}
}
func TestIsTypeSupportedSave(t *testing.T) {
types := []struct {
name ImageType
}{
{JPEG}, {PNG}, {WEBP}, {GIF},
}
if VipsVersion >= "8.5.0" {
types = append(types, struct{ name ImageType }{TIFF})
}
if VipsVersion >= "8.8.0" {
types = append(types, struct{ name ImageType }{HEIF})
}
if VipsVersion >= "8.9.0" {
types = append(types, struct{ name ImageType }{AVIF})
}
if VipsVersion >= "8.12.0" {
types = append(types, struct{ name ImageType }{GIF})
}
for _, n := range types {
if IsTypeSupportedSave(n.name) == false {
t.Fatalf("Image type %s is not valid", ImageTypes[n.name])
}
}
}
func TestIsTypeNameSupportedSave(t *testing.T) {
types := []struct {
name string
expected bool
}{
{"jpeg", true},
{"png", true},
{"webp", true},
{"pdf", false},
{"tiff", VipsVersion >= "8.5.0"},
{"heif", VipsVersion >= "8.8.0"},
{"avif", VipsVersion >= "8.9.0"},
{"gif", VipsVersion >= "8.12.0"},
}
for _, n := range types {
if IsTypeNameSupportedSave(n.name) != n.expected {
t.Fatalf("Image type %s is not valid", n.name)
}
}
}