go-libwebp

Experimental translation from libwebp to Go source.
Log | Files | Refs | README | LICENSE

commit c653dffa3b536524690f5f3fa4aa5980308b8154
parent eafaf278cfd93252ee33e0cddfa9385b93654c21
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date:   Thu, 19 Oct 2023 13:56:28 +0800

webp: randomize pixel colors during fuzz

Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com>

Diffstat:
Mwebp/webp_test.go | 19+++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/webp/webp_test.go b/webp/webp_test.go @@ -6,6 +6,7 @@ import ( "image" "image/color" "image/png" + "math/rand" "os" "path/filepath" "testing" @@ -44,14 +45,20 @@ func TestSmoke(t *testing.T) { } func FuzzEncode(f *testing.F) { - f.Add(uint16(0), uint16(0), uint16(0), uint16(0), uint8(0), uint8(0), uint8(0), uint8(0), float32(0)) - f.Add(uint16(0), uint16(0), uint16(1), uint16(1), uint8(1), uint8(1), uint8(1), uint8(1), float32(1)) - f.Add(uint16(0), uint16(0), uint16(1), uint16(1), uint8(1), uint8(1), uint8(1), uint8(1), float32(0.5)) - f.Add(uint16(0), uint16(0), uint16(100), uint16(100), uint8(100), uint8(50), uint8(50), uint8(50), float32(0.75)) - f.Fuzz(func(t *testing.T, x0, y0, x1, y1 uint16, r, g, b, a uint8, quality float32) { + f.Add(uint16(0), uint16(0), uint16(0), uint16(0), int64(0), float32(0)) + f.Add(uint16(0), uint16(0), uint16(1), uint16(1), int64(1), float32(1)) + f.Add(uint16(0), uint16(0), uint16(1), uint16(1), int64(2), float32(0.5)) + f.Add(uint16(0), uint16(0), uint16(100), uint16(100), int64(3), float32(0.75)) + f.Fuzz(func(t *testing.T, x0, y0, x1, y1 uint16, seed int64, quality float32) { + rng := rand.New(rand.NewSource(seed)) m := image.NewNRGBA(image.Rect(int(x0), int(y0), int(x1), int(y1))) for x := x0; x < x1; x += 1 { for y := y0; y < y1; y += 1 { + colors := rng.Uint32() + r := uint8(colors) + g := uint8(colors >> 8) + b := uint8(colors >> 16) + a := uint8(colors >> 24) m.Set(int(x), int(y), color.RGBA{R: r, G: g, B: b, A: a}) } } @@ -65,7 +72,7 @@ func FuzzEncode(f *testing.F) { } buf := bytes.NewBuffer(nil) if err := Encode(buf, m, Quality(quality)); err != nil { - t.Errorf("error: %v (x0: %d, y0: %d, x1: %d, y1: %d) (r: %d, g: %d, b: %d, a: %d)", err, x0, y0, x1, y1, r, g, b, a) + t.Errorf("error: %v (x0: %d, y0: %d, x1: %d, y1: %d)", err, x0, y0, x1, y1) } }) }