| package fse |
| |
| import ( |
| "bytes" |
| "fmt" |
| "testing" |
| |
| "github.com/klauspost/compress/internal/fuzz" |
| ) |
| |
| func FuzzCompress(f *testing.F) { |
| fuzz.AddFromZip(f, "testdata/fse_compress.zip", fuzz.TypeGoFuzz, false) |
| f.Fuzz(func(t *testing.T, buf0 []byte) { |
| var s, s2 Scratch |
| b, err := Compress(buf0, &s) |
| if err != nil || b == nil { |
| return |
| } |
| err = s.validateNorm() |
| if err != nil { |
| return |
| } |
| //Decompress |
| got, err := Decompress(b, &s2) |
| if err != nil || len(got) == 0 { |
| return |
| } |
| if !bytes.Equal(buf0, got) { |
| t.Fatal(fmt.Sprintln("FuzzCompress output mismatch\n", len(got), "org: \n", len(buf0))) |
| } |
| }) |
| } |
| |
| func FuzzDecompress(f *testing.F) { |
| // Input is mixed, but TypeGoFuzz will fall back to raw input. |
| fuzz.AddFromZip(f, "testdata/fse_decompress.zip", fuzz.TypeGoFuzz, false) |
| f.Fuzz(func(t *testing.T, buf0 []byte) { |
| var s2 Scratch |
| s2.DecompressLimit = 128 << 10 |
| //Decompress |
| got, err := Decompress(buf0, &s2) |
| if err != nil || len(got) == 0 { |
| return |
| } |
| }) |
| } |