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  }