Select Git revision
convert_test.go

Semyon Krestyaninov authored
convert_test.go 2.75 KiB
package convert
import (
"bytes"
"image"
"os"
"testing"
"github.com/stretchr/testify/require"
)
func TestOpen(t *testing.T) {
_, ext, err := Open("testdata/1.jpeg")
if err != nil {
return
}
require.NoError(t, err)
require.Equal(t, "jpeg", ext)
}
func TestFormatFromExtension(t *testing.T) {
var tests = []struct {
name string
input string
output Format
wantErr bool
}{
{
name: "correct jpeg",
input: "jpg",
output: JPEG,
wantErr: false,
},
{
name: "correct png",
input: "png",
output: PNG,
wantErr: false,
},
{
name: "incorrect any",
input: "any",
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
format, err := FormatFromExtension(tt.input)
if tt.wantErr {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, tt.output, format)
}
})
}
}
func TestEncode(t *testing.T) {
var tests = []struct {
name string
input Format
wantErr bool
}{
{
name: "unknown format",
input: "go",
wantErr: true,
},
{
name: "jpeg format",
input: JPEG,
wantErr: false,
},
{
name: "png format",
input: PNG,
wantErr: false,
},
{
name: "gif format",
input: GIF,
wantErr: false,
},
{
name: "tiff format",
input: TIFF,
wantErr: false,
},
{
name: "bmp format",
input: BMP,
wantErr: false,
},
}
img := image.NewRGBA(image.Rect(0, 0, 10, 10))
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
buf := new(bytes.Buffer)
err := Encode(buf, tt.input, img)
if tt.wantErr {
require.Error(t, err)
} else {
require.NoError(t, err)
}
})
}
}
func TestDecode(t *testing.T) {
var tests = []struct {
name string
input string
output string
wantErr bool
}{
{
name: "unknown format",
input: "testdata/1.go",
wantErr: true,
},
{
name: "jpeg format",
input: "testdata/1.jpeg",
output: "jpeg",
wantErr: false,
},
{
name: "png format",
input: "testdata/1.png",
output: "png",
wantErr: false,
},
{
name: "gif format",
input: "testdata/1.gif",
output: "gif",
wantErr: false,
},
{
name: "tiff format",
input: "testdata/1.tiff",
output: "tiff",
wantErr: false,
},
{
name: "bmp format",
input: "testdata/1.bmp",
output: "bmp",
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
file, err := os.Open(tt.input)
if err != nil {
t.Fatal(err)
}
defer file.Close()
_, ext, err := Decode(file)
if tt.wantErr {
require.Error(t, err)
} else {
require.NoError(t, err)
require.Equal(t, tt.output, ext)
}
})
}
}