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}