commit 2c27660c379f4dc04d54852fccc8f883b0fdef72
parent 5b89d308e57cde1ac64afa7cb259ec89c9013e96
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date: Thu, 19 Oct 2023 16:09:53 +0800
webp: add basic encode test
This is a smoke test to make sure we can produce a valid webp and not
error along the way.
Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Diffstat:
6 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,2 +1,3 @@
cdb.json
.DS_Store
+golden-got.webp
diff --git a/test.webp b/test.webp
Binary files differ.
diff --git a/webp/encode.go b/webp/encode.go
@@ -101,6 +101,7 @@ func encode(enc *Encoder, w io.Writer, m *image.RGBA) error {
)
defer lib.WebPFree(tls, enc.out)
+
if size == 0 {
return fmt.Errorf("encoding webp image: size %d", size)
}
diff --git a/webp/testdata/golden-in.png b/webp/testdata/golden-in.png
Binary files differ.
diff --git a/webp/testdata/golden-out.webp b/webp/testdata/golden-out.webp
Binary files differ.
diff --git a/webp/webp_test.go b/webp/webp_test.go
@@ -0,0 +1,42 @@
+package webp
+
+import (
+ "bytes"
+ _ "embed"
+ "image/png"
+ "os"
+ "path/filepath"
+ "testing"
+)
+
+//go:embed testdata/golden-in.png
+var goldenIn []byte
+
+//go:embed testdata/golden-out.webp
+var goldenOut []byte
+
+// TestSmoke runs a basic smoke test to see if we can encode and decode a webp.
+func TestSmoke(t *testing.T) {
+ m, err := png.Decode(bytes.NewReader(goldenIn))
+ if err != nil {
+ t.Fatalf("decoding image: %v", err)
+ }
+
+ buf := bytes.NewBuffer(nil)
+
+ if err := Encode(buf, m); err != nil {
+ t.Fatalf("encoding webp: %v", err)
+ }
+
+ if !bytes.Equal(goldenOut, buf.Bytes()) {
+ t.Errorf("bytes not equal, want %d, got %d", len(goldenOut), buf.Len())
+ }
+
+ if err := os.WriteFile(filepath.Join("testdata", "golden-got.webp"), buf.Bytes(), 0o655); err != nil {
+ t.Errorf("writing output png: %v", err)
+ }
+
+ if _, err := Decode(buf); err != nil {
+ t.Fatalf("decoding webp: %v", err)
+ }
+}