|
package test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/hermeznetwork/hermez-node/common"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestGenerateTestL2Txs(t *testing.T) {
|
|
s := `
|
|
A (1): 10
|
|
A (2): 20
|
|
B (1): 5
|
|
A-B (1): 6 1
|
|
B-C (1): 3 1
|
|
> advance batch
|
|
C-A (1): 3 1
|
|
A-B (1): 1 1
|
|
A-B (2): 15 1
|
|
User0 (1): 20
|
|
User1 (3) : 20
|
|
User0-User1 (1): 15 1
|
|
User1-User0 (3): 15 1
|
|
B-D (2): 3 1
|
|
`
|
|
parser := NewParser(strings.NewReader(s))
|
|
instructions, err := parser.Parse()
|
|
assert.Nil(t, err)
|
|
|
|
l1txs, coordinatorL1txs, l2txs, _ := GenerateTestTxs(t, instructions)
|
|
assert.Equal(t, 2, len(l1txs))
|
|
assert.Equal(t, 3, len(l1txs[0]))
|
|
assert.Equal(t, 1, len(coordinatorL1txs[0]))
|
|
assert.Equal(t, 2, len(l2txs[0]))
|
|
assert.Equal(t, 2, len(l1txs[1]))
|
|
assert.Equal(t, 4, len(coordinatorL1txs[1]))
|
|
assert.Equal(t, 6, len(l2txs[1]))
|
|
|
|
accounts := GenerateKeys(t, instructions.Accounts)
|
|
|
|
// l1txs
|
|
assert.Equal(t, common.TxTypeCreateAccountDeposit, l1txs[0][0].Type)
|
|
assert.Equal(t, accounts["A1"].BJJ.Public().String(), l1txs[0][0].FromBJJ.String())
|
|
assert.Equal(t, accounts["A2"].BJJ.Public().String(), l1txs[0][1].FromBJJ.String())
|
|
assert.Equal(t, accounts["B1"].BJJ.Public().String(), l1txs[0][2].FromBJJ.String())
|
|
assert.Equal(t, accounts["User13"].BJJ.Public().String(), l1txs[1][1].FromBJJ.String())
|
|
|
|
// l2txs
|
|
assert.Equal(t, common.TxTypeTransfer, l2txs[0][0].Type)
|
|
assert.Equal(t, common.Idx(256), l2txs[0][0].FromIdx)
|
|
assert.Equal(t, common.Idx(258), *l2txs[0][0].ToIdx)
|
|
assert.Equal(t, accounts["B1"].BJJ.Public().String(), l2txs[0][0].ToBJJ.String())
|
|
assert.Equal(t, accounts["B1"].Addr.Hex(), l2txs[0][0].ToEthAddr.Hex())
|
|
assert.Equal(t, common.Nonce(0), l2txs[0][0].Nonce)
|
|
assert.Equal(t, common.Nonce(1), l2txs[1][1].Nonce)
|
|
assert.Equal(t, common.FeeSelector(1), l2txs[0][0].Fee)
|
|
}
|