arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
hermez-node/common/pooll2tx_test.go
common/pooll2tx_test.goRaw
 1package common
 2
 3import (
 4	"encoding/hex"
 5	"math/big"
 6	"testing"
 7
 8	"github.com/iden3/go-iden3-crypto/babyjub"
 9	"github.com/stretchr/testify/assert"
10)
11
12func TestNonceParser(t *testing.T) {
13	n := Nonce(1)
14	nBytes, err := n.Bytes()
15	assert.Nil(t, err)
16	assert.Equal(t, 5, len(nBytes))
17	assert.Equal(t, "0100000000", hex.EncodeToString(nBytes[:]))
18	n2, err := NonceFromBytes(nBytes)
19	assert.Nil(t, err)
20	assert.Equal(t, n, n2)
21
22	// value before overflow
23	n = Nonce(1099511627775)
24	nBytes, err = n.Bytes()
25	assert.Nil(t, err)
26	assert.Equal(t, 5, len(nBytes))
27	assert.Equal(t, "ffffffffff", hex.EncodeToString(nBytes[:]))
28	n2, err = NonceFromBytes(nBytes)
29	assert.Nil(t, err)
30	assert.Equal(t, n, n2)
31
32	// expect value overflow
33	n = Nonce(1099511627776)
34	nBytes, err = n.Bytes()
35	assert.NotNil(t, err)
36	assert.Equal(t, ErrNonceOverflow, err)
37	_, err = NonceFromBytes(nBytes)
38	assert.Nil(t, err)
39}
40
41func TestTxCompressedData(t *testing.T) {
42	var sk babyjub.PrivateKey
43	_, err := hex.Decode(sk[:], []byte("0001020304050607080900010203040506070809000102030405060708090001"))
44	assert.Nil(t, err)
45
46	tx := PoolL2Tx{
47		FromIdx: 2,
48		ToIdx:   3,
49		Amount:  big.NewInt(4),
50		TokenID: 5,
51		Nonce:   6,
52		ToBJJ:   sk.Public(),
53	}
54	txCompressedData, err := tx.TxCompressedData()
55	assert.Nil(t, err)
56	// test vector value generated from javascript implementation
57	assert.Equal(t, "1766847064778421992193717128424891165872736891548909569553540449389241871", txCompressedData.String())
58	assert.Equal(t, "10000000000060000000500040000000000030000000000020001c60be60f", hex.EncodeToString(txCompressedData.Bytes())[1:])
59
60	tx = PoolL2Tx{
61		FromIdx: 7,
62		ToIdx:   8,
63		Amount:  big.NewInt(9),
64		TokenID: 10,
65		Nonce:   11,
66		Fee:     12,
67		ToBJJ:   sk.Public(),
68	}
69	txCompressedData, err = tx.TxCompressedDataV2()
70	assert.Nil(t, err)
71	// test vector value generated from javascript implementation
72	assert.Equal(t, "6571340879233176732837827812956721483162819083004853354503", txCompressedData.String())
73	assert.Equal(t, "10c000000000b0000000a0009000000000008000000000007", hex.EncodeToString(txCompressedData.Bytes())[1:])
74
75}