diff --git a/pkg/images/imgconv/default_format.go b/pkg/images/imgconv/default_format.go index e8e5bd27458994ae7d742689b347a8ad559f126c..389df4ea57eba814af8e862be9fbb7a745915371 100644 --- a/pkg/images/imgconv/default_format.go +++ b/pkg/images/imgconv/default_format.go @@ -20,9 +20,9 @@ const ( ) func init() { - RegisterFormatEncoder(JPEG, func(w io.Writer, img image.Image) error { return jpeg.Encode(w, img, nil) }, "jpg", "jpeg") - RegisterFormatEncoder(PNG, png.Encode, "png") + RegisterFormatEncoder(JPEG, func(w io.Writer, img image.Image) error { return jpeg.Encode(w, img, nil) }, "jpg") + RegisterFormatEncoder(PNG, png.Encode) RegisterFormatEncoder(GIF, func(w io.Writer, img image.Image) error { return gif.Encode(w, img, nil) }) - RegisterFormatEncoder(TIFF, func(w io.Writer, img image.Image) error { return tiff.Encode(w, img, nil) }) + RegisterFormatEncoder(TIFF, func(w io.Writer, img image.Image) error { return tiff.Encode(w, img, nil) }, "tif") RegisterFormatEncoder(BMP, bmp.Encode) } diff --git a/pkg/images/imgconv/imgconv.go b/pkg/images/imgconv/imgconv.go index 7944a619ca98bf10c77eb9b7a444984a194638fe..ad8e6b5697accc4b62898abbc0cef5453b3fdadf 100644 --- a/pkg/images/imgconv/imgconv.go +++ b/pkg/images/imgconv/imgconv.go @@ -21,6 +21,7 @@ var ( func RegisterFormatEncoder(format Format, fn EncodeFunc, extensions ...string) { defaultFormatEncoderRegistry[format] = fn + formatExtensions[string(format)] = format for _, ext := range extensions { formatExtensions[strings.TrimPrefix(strings.ToLower(ext), ".")] = format } @@ -66,12 +67,3 @@ func FormatFromExtension(ext string) (Format, error) { } return "", errors.Errorf("unsupported format") } - -//func NormalizeFormat(format string) string { -// format = strings.ToLower(format) -// format = strings.TrimPrefix(format, ".") -// //if v, ok := builtinFormats[format]; ok { -// // return v -// //} -// return format -//} diff --git a/pkg/images/imgconv/imgconv_test.go b/pkg/images/imgconv/imgconv_test.go index 4ee0f21950f78fbcb76109f127003ad64ff0ea07..13660d7b976046bf69af743b6a122eb00aa44ba0 100644 --- a/pkg/images/imgconv/imgconv_test.go +++ b/pkg/images/imgconv/imgconv_test.go @@ -15,24 +15,52 @@ func TestOpen(t *testing.T) { return } require.NoError(t, err) - require.Equal(t, JPEG, ext) + require.Equal(t, "jpeg", ext) } -func TestNormalizeFormat(t *testing.T) { - require.Equal(t, NormalizeFormat("jpg"), JPEG) - require.Equal(t, NormalizeFormat("png"), PNG) - require.Equal(t, NormalizeFormat("tif"), TIFF) - require.Equal(t, NormalizeFormat("any"), "any") - require.Equal(t, NormalizeFormat(".jpg"), JPEG) - require.Equal(t, NormalizeFormat(".gif"), GIF) - require.Equal(t, NormalizeFormat(".bmp"), BMP) - require.Equal(t, NormalizeFormat(".any"), "any") +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 string + input Format wantErr bool }{ { @@ -95,31 +123,31 @@ func TestDecode(t *testing.T) { { name: "jpeg format", input: "testdata/1.jpeg", - output: JPEG, + output: "jpeg", wantErr: false, }, { name: "png format", input: "testdata/1.png", - output: PNG, + output: "png", wantErr: false, }, { name: "gif format", input: "testdata/1.gif", - output: GIF, + output: "gif", wantErr: false, }, { name: "tiff format", input: "testdata/1.tiff", - output: TIFF, + output: "tiff", wantErr: false, }, { name: "bmp format", input: "testdata/1.bmp", - output: BMP, + output: "bmp", wantErr: false, }, } diff --git a/pkg/images/imgconv/webp_test.go b/pkg/images/imgconv/webp_test.go index 4574bfbd66593303a44fa2cd1ffca160786bf87b..b244d1520aacd2ac5062ab1b4b872f653f627350 100644 --- a/pkg/images/imgconv/webp_test.go +++ b/pkg/images/imgconv/webp_test.go @@ -26,5 +26,5 @@ func TestDecodeWebP(t *testing.T) { defer file.Close() _, ext, err := Decode(file) require.NoError(t, err) - require.Equal(t, WEBP, ext) + require.Equal(t, "webp", ext) }