hermez-node/common/l2tx_test.go
common/l2tx_test.goRaw
1package common
2
3import (
4 "encoding/hex"
5 "math/big"
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 "github.com/stretchr/testify/require"
10)
11
12func TestNewL2Tx(t *testing.T) {
13 l2Tx := &L2Tx{
14 FromIdx: 87654,
15 ToIdx: 300,
16 TokenID: 5,
17 Amount: big.NewInt(4),
18 Nonce: 144,
19 }
20 l2Tx, err := NewL2Tx(l2Tx)
21 assert.NoError(t, err)
22 assert.Equal(t, "0x02fb52b5d0b9ef2626c11701bb751b2720c76d59946b9a48146ac153bb6e63bf6a", l2Tx.TxID.String())
23
24 l2Tx = &L2Tx{
25 FromIdx: 87654,
26 ToIdx: 300,
27 TokenID: 5,
28 Amount: big.NewInt(4),
29 Nonce: 1,
30 }
31 l2Tx, err = NewL2Tx(l2Tx)
32 assert.NoError(t, err)
33 assert.Equal(t, "0x0276114a8f666fa1ff7dbf34b4a9da577808dc501e3b2760d01fe3ef5473f5737f", l2Tx.TxID.String())
34
35 l2Tx = &L2Tx{
36 FromIdx: 87654,
37 ToIdx: 300,
38 TokenID: 5,
39 Amount: big.NewInt(4),
40 Fee: 126,
41 Nonce: 3,
42 }
43 l2Tx, err = NewL2Tx(l2Tx)
44 assert.NoError(t, err)
45 assert.Equal(t, "0x025afb63126d3067f61f633d13e5a51da0551af3a4567a9af2db5321ed04214ff4", l2Tx.TxID.String())
46
47 l2Tx = &L2Tx{
48 FromIdx: 87654,
49 ToIdx: 300,
50 TokenID: 5,
51 Amount: big.NewInt(4),
52 Nonce: 1003,
53 Fee: 144,
54 }
55 l2Tx, err = NewL2Tx(l2Tx)
56 assert.NoError(t, err)
57 assert.Equal(t, "0x02cf390157041c3b1b59f0aaed4da464f0d0d48f1d026e46fd89c7fe1e5aed7fcf", l2Tx.TxID.String())
58
59 l2Tx = &L2Tx{
60 FromIdx: 1,
61 ToIdx: 1,
62 TokenID: 1,
63 Amount: big.NewInt(1),
64 Nonce: 1,
65 Fee: 1,
66 }
67 l2Tx, err = NewL2Tx(l2Tx)
68 assert.NoError(t, err)
69 assert.Equal(t, "0x020ec18eaae67fcd545998841a9c4be09ee3083e12db6ae5e5213a2ecaaa52d5cf", l2Tx.TxID.String())
70
71 l2Tx = &L2Tx{
72 FromIdx: 999,
73 ToIdx: 999,
74 TokenID: 999,
75 Amount: big.NewInt(999),
76 Nonce: 999,
77 Fee: 255,
78 }
79 l2Tx, err = NewL2Tx(l2Tx)
80 assert.NoError(t, err)
81 assert.Equal(t, "0x02f036223e79fac776de107f50822552cc964ee9fc4caa304613285f6976bcc940", l2Tx.TxID.String())
82
83 l2Tx = &L2Tx{
84 FromIdx: 4444,
85 ToIdx: 300,
86 TokenID: 0,
87 Amount: big.NewInt(3400000000),
88 Nonce: 2,
89 Fee: 25,
90 }
91 l2Tx, err = NewL2Tx(l2Tx)
92 assert.NoError(t, err)
93 assert.Equal(t, "0x029c8aef9ef24531e4cf84e78cbab1018ba1626a5a10afb6b7c356be1b5c28e92c", l2Tx.TxID.String())
94}
95
96func TestL2TxByteParsers(t *testing.T) {
97 amount := new(big.Int)
98 amount.SetString("79000000", 10)
99 l2Tx := &L2Tx{
100 ToIdx: 256,
101 Amount: amount,
102 FromIdx: 257,
103 Fee: 201,
104 }
105 // Data from the compatibility test
106 expected := "00000101000001002b16c9"
107 encodedData, err := l2Tx.BytesDataAvailability(32)
108 require.NoError(t, err)
109 assert.Equal(t, expected, hex.EncodeToString(encodedData))
110
111 decodedData, err := L2TxFromBytesDataAvailability(encodedData, 32)
112 require.NoError(t, err)
113 assert.Equal(t, l2Tx, decodedData)
114}