arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
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}