You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

82 lines
2.9 KiB

package common
import (
"encoding/hex"
"testing"
"github.com/iden3/go-merkletree"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestBJJFromStringWithChecksum(t *testing.T) {
s := "21b0a1688b37f77b1d1d5539ec3b826db5ac78b2513f574a04c50a7d4f8246d7"
pkComp, err := BJJFromStringWithChecksum(s)
assert.NoError(t, err)
sBytes, err := hex.DecodeString(s)
assert.NoError(t, err)
assert.Equal(t, hex.EncodeToString(SwapEndianness(sBytes)), pkComp.String())
pk, err := pkComp.Decompress()
assert.NoError(t, err)
// expected values computed with js implementation
assert.Equal(t,
"2492816973395423007340226948038371729989170225696553239457870892535792679622",
pk.X.String())
assert.Equal(t,
"15238403086306505038849621710779816852318505119327426213168494964113886299863",
pk.Y.String())
}
func TestRmEndingZeroes(t *testing.T) {
s0, err :=
merkletree.NewHashFromHex("0x0000000000000000000000000000000000000000000000000000000000000000")
require.NoError(t, err)
s1, err :=
merkletree.NewHashFromHex("0x0000000000000000000000000000000000000000000000000000000000000001")
require.NoError(t, err)
s2, err :=
merkletree.NewHashFromHex("0x0000000000000000000000000000000000000000000000000000000000000002")
require.NoError(t, err)
// expect cropped last zeroes
circomSiblings := []*merkletree.Hash{s0, s1, s0, s1, s1, s1, s2, s0, s0, s0, s0}
siblings := RmEndingZeroes(circomSiblings)
expected := []*merkletree.Hash{s0, s1, s0, s1, s1, s1, s2}
assert.Equal(t, expected, siblings)
// expect empty array when input is an empty array
siblings = RmEndingZeroes([]*merkletree.Hash{})
assert.Equal(t, []*merkletree.Hash{}, siblings)
// expect nil when input is nil
siblings = RmEndingZeroes(nil)
assert.Nil(t, siblings)
// cases when inputs are [x], [x,0], [0,x]
circomSiblings = []*merkletree.Hash{s1}
siblings = RmEndingZeroes(circomSiblings)
assert.Equal(t, []*merkletree.Hash{s1}, siblings)
circomSiblings = []*merkletree.Hash{s1, s0}
siblings = RmEndingZeroes(circomSiblings)
assert.Equal(t, []*merkletree.Hash{s1}, siblings)
circomSiblings = []*merkletree.Hash{s0, s1}
siblings = RmEndingZeroes(circomSiblings)
assert.Equal(t, []*merkletree.Hash{s0, s1}, siblings)
// expect empty array when input is all zeroes
circomSiblings = []*merkletree.Hash{s0}
siblings = RmEndingZeroes(circomSiblings)
assert.Equal(t, []*merkletree.Hash{}, siblings)
circomSiblings = []*merkletree.Hash{s0, s0}
siblings = RmEndingZeroes(circomSiblings)
assert.Equal(t, []*merkletree.Hash{}, siblings)
circomSiblings = []*merkletree.Hash{s0, s0, s0, s0, s0}
siblings = RmEndingZeroes(circomSiblings)
assert.Equal(t, []*merkletree.Hash{}, siblings)
// expect input equal to output when last element!=0
circomSiblings = []*merkletree.Hash{s0, s1, s0, s1, s1, s1, s2, s0, s0, s0, s0, s2}
siblings = RmEndingZeroes(circomSiblings)
assert.Equal(t, circomSiblings, siblings)
}