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.
171 lines
3.6 KiB
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)
|
|
}
|
|
}
|
|
}
|