From f9b86f445d631bd49bc83c29de281c94a39f38a4 Mon Sep 17 00:00:00 2001 From: ensiouel <ensiouel@gmail.com> Date: Thu, 23 Nov 2023 13:15:58 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/images/imgconv/default_format.go | 6 +-- pkg/images/imgconv/imgconv.go | 10 +---- pkg/images/imgconv/imgconv_test.go | 60 ++++++++++++++++++++-------- pkg/images/imgconv/webp_test.go | 2 +- 4 files changed, 49 insertions(+), 29 deletions(-) diff --git a/pkg/images/imgconv/default_format.go b/pkg/images/imgconv/default_format.go index e8e5bd27..389df4ea 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 7944a619..ad8e6b56 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 4ee0f219..13660d7b 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 4574bfbd..b244d152 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) } -- GitLab