arnaucube
arnaucube/go-iden3-cryptoPublic Self-hosted repository
go-iden3-crypto/field/field_test.go
field/field_test.goRaw
 1// code originally taken from https://github.com/arnaucube/go-snark (https://github.com/arnaucube/go-snark/blob/master/fields/fq.go), pasted here to ensure compatibility among future changes
 2
 3package field
 4
 5import (
 6	"math/big"
 7	"testing"
 8
 9	"github.com/stretchr/testify/assert"
10)
11
12func iToBig(a int) *big.Int {
13	return big.NewInt(int64(a))
14}
15
16func TestFq1(t *testing.T) {
17	fq1 := NewFq(iToBig(7))
18
19	res := fq1.Add(iToBig(4), iToBig(4))
20	assert.Equal(t, iToBig(1), fq1.Affine(res))
21
22	res = fq1.Double(iToBig(5))
23	assert.Equal(t, iToBig(3), fq1.Affine(res))
24
25	res = fq1.Sub(iToBig(5), iToBig(7))
26	assert.Equal(t, iToBig(5), fq1.Affine(res))
27
28	res = fq1.Neg(iToBig(5))
29	assert.Equal(t, iToBig(2), fq1.Affine(res))
30
31	res = fq1.Mul(iToBig(5), iToBig(11))
32	assert.Equal(t, iToBig(6), fq1.Affine(res))
33
34	res = fq1.Inverse(iToBig(4))
35	assert.Equal(t, iToBig(2), res)
36
37	res = fq1.Square(iToBig(5))
38	assert.Equal(t, iToBig(4), res)
39}