github.com/consensys/gnark-crypto@v0.14.0/internal/generator/fft/template/tests/fuzz.go.tmpl (about)

     1  import (
     2  	"encoding/hex"
     3  	"io"
     4  	"math/rand"
     5  	"testing"
     6  	"time"
     7  	"runtime/debug"
     8  )
     9  
    10  func TestFuzz(t *testing.T) {
    11  	const maxBytes = 1 << 10
    12  	const testCount = 7
    13  	var bytes [maxBytes]byte
    14  	var i int
    15  	seed := time.Now().UnixNano()
    16  	defer func() {
    17  		if r := recover(); r != nil {
    18  			t.Error(r)
    19  			t.Error(string(debug.Stack()))
    20  			t.Fatal("test panicked", i, hex.EncodeToString(bytes[:i]), "seed", seed)
    21  		}
    22  	}()
    23  	r := rand.New(rand.NewSource(seed))
    24  
    25  	for i = 1; i < maxBytes; i++ {
    26  		for j := 0; j < testCount; j++ {
    27  			if _, err := io.ReadFull(r, bytes[:i]); err != nil {
    28  				t.Fatal("couldn't read random bytes", err)
    29  			}
    30  
    31  			Fuzz(bytes[:i]) 
    32  		}
    33  	}
    34  
    35  }