github.com/consensys/gnark@v0.11.0/internal/backend/ioutils/intcomp_test.go (about) 1 package ioutils 2 3 import ( 4 "bytes" 5 "testing" 6 ) 7 8 func FuzzIntcomp32(f *testing.F) { 9 f.Fuzz(func(t *testing.T, in []byte) { 10 // convert in into a []uint32 ref slice; we just parse by multiple of 4 bytes 11 // and convert to uint32 12 data := make([]uint32, len(in)/4) 13 for i := 0; i < len(data); i++ { 14 data[i] = uint32(in[i*4]) | uint32(in[i*4+1])<<8 | uint32(in[i*4+2])<<16 | uint32(in[i*4+3])<<24 15 } 16 17 var buf bytes.Buffer 18 if _, err := CompressAndWriteUints32(&buf, data, nil); err != nil { 19 t.Fatalf("CompressAndWriteUints32: %v", err) 20 } 21 _, n, out, err := ReadAndDecompressUints32(buf.Bytes(), nil) 22 if err != nil { 23 t.Fatalf("ReadAndDecompressUints32: %v", err) 24 } 25 if n != len(buf.Bytes()) { 26 t.Fatalf("ReadAndDecompressUints32: n=%d, want %d", n, len(buf.Bytes())) 27 } 28 if len(out) != len(data) { 29 t.Fatalf("ReadAndDecompressUints32: len(out)=%d, want %d", len(out), len(data)) 30 } 31 for i := 0; i < len(data); i++ { 32 if out[i] != data[i] { 33 t.Fatalf("ReadAndDecompressUints32: out[%d]=%d, want %d", i, out[i], data[i]) 34 } 35 } 36 }) 37 38 }