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}