arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/plonky2_verifier/constant_gate_test.go
plonky2_verifier/constant_gate_test.goRaw
 1package plonky2_verifier
 2
 3import (
 4	"errors"
 5	. "gnark-plonky2-verifier/field"
 6	"testing"
 7
 8	"github.com/consensys/gnark/frontend"
 9	"github.com/consensys/gnark/test"
10)
11
12type TestConstantGateCircuit struct{}
13
14func (circuit *TestConstantGateCircuit) Define(api frontend.API) error {
15	commonCircuitData := DeserializeCommonCircuitData("./data/step/common_circuit_data.json")
16	numSelectors := len(commonCircuitData.SelectorsInfo.groups)
17
18	fieldAPI := NewFieldAPI(api)
19	qeAPI := NewQuadraticExtensionAPI(fieldAPI, commonCircuitData.DegreeBits)
20	plonkChip := NewPlonkChip(api, qeAPI, commonCircuitData)
21
22	constantGate := ConstantGate{numConsts: 2}
23	vars := EvaluationVars{localConstants: localConstants[numSelectors:], localWires: localWires, publicInputsHash: publicInputsHash}
24
25	constraints := constantGate.EvalUnfiltered(plonkChip, vars)
26
27	if len(constraints) != len(constantGateExpectedConstraints) {
28		return errors.New("constant gate constraints length mismatch")
29	}
30
31	for i := 0; i < len(constraints); i++ {
32		qeAPI.AssertIsEqual(constraints[i], constantGateExpectedConstraints[i])
33	}
34
35	return nil
36}
37
38func TestConstantGate(t *testing.T) {
39	assert := test.NewAssert(t)
40
41	testCase := func() {
42		circuit := TestConstantGateCircuit{}
43		witness := TestConstantGateCircuit{}
44		err := test.IsSolved(&circuit, &witness, TEST_CURVE.ScalarField())
45		assert.NoError(err)
46	}
47
48	testCase()
49}