github.com/consensys/gnark-crypto@v0.14.0/ecc/bw6-761/internal/fptower/generators_test.go (about)

     1  package fptower
     2  
     3  import (
     4  	"github.com/consensys/gnark-crypto/ecc/bw6-761/fp"
     5  	"github.com/leanovate/gopter"
     6  )
     7  
     8  // TODO all gopter.Gen are incorrect, use same model as goff
     9  
    10  // GenFp generates an Fp element
    11  func GenFp() gopter.Gen {
    12  	return func(genParams *gopter.GenParameters) *gopter.GenResult {
    13  		var elmt fp.Element
    14  
    15  		if _, err := elmt.SetRandom(); err != nil {
    16  			panic(err)
    17  		}
    18  		genResult := gopter.NewGenResult(elmt, gopter.NoShrinker)
    19  		return genResult
    20  	}
    21  }
    22  
    23  // GenE3 generates an E3 elmt
    24  func GenE3() gopter.Gen {
    25  	return gopter.CombineGens(
    26  		GenFp(),
    27  		GenFp(),
    28  		GenFp(),
    29  	).Map(func(values []interface{}) *E3 {
    30  		return &E3{A0: values[0].(fp.Element), A1: values[1].(fp.Element), A2: values[2].(fp.Element)}
    31  	})
    32  }
    33  
    34  // E6 generates an E6 elmt
    35  func GenE6() gopter.Gen {
    36  	return gopter.CombineGens(
    37  		GenE3(),
    38  		GenE3(),
    39  	).Map(func(values []interface{}) *E6 {
    40  		return &E6{B0: *values[0].(*E3), B1: *values[1].(*E3)}
    41  	})
    42  }