diff --git a/test/til/lang.go b/test/til/lang.go index b96ccc0..7802568 100644 --- a/test/til/lang.go +++ b/test/til/lang.go @@ -5,6 +5,7 @@ import ( "bytes" "fmt" "io" + "math/big" "sort" "strconv" @@ -61,8 +62,8 @@ type instruction struct { literal string from string to string - amount uint64 - loadAmount uint64 + amount *big.Int + loadAmount *big.Int fee uint8 tokenID common.TokenID typ common.TxType // D: Deposit, T: Transfer, E: ForceExit @@ -433,30 +434,30 @@ func (p *parser) parseLine(setType setType) (*instruction, error) { // deposit case _, lit = p.scanIgnoreWhitespace() c.literal += lit - loadAmount, err := strconv.Atoi(lit) - if err != nil { + loadAmount, ok := new(big.Int).SetString(lit, 10) + if !ok { line, _ := p.s.r.ReadString('\n') c.literal += line - return c, err + return c, fmt.Errorf("Can not parse number for LoadAmount") } - c.loadAmount = uint64(loadAmount) + c.loadAmount = loadAmount if err := p.expectChar(c, ","); err != nil { return c, err } } _, lit = p.scanIgnoreWhitespace() c.literal += lit - amount, err := strconv.Atoi(lit) - if err != nil { + amount, ok := new(big.Int).SetString(lit, 10) + if !ok { line, _ := p.s.r.ReadString('\n') c.literal += line - return c, err + return c, fmt.Errorf("Can not parse number for Amount: %s", lit) } if c.typ == common.TxTypeDeposit || c.typ == common.TxTypeCreateAccountDeposit { - c.loadAmount = uint64(amount) + c.loadAmount = amount } else { - c.amount = uint64(amount) + c.amount = amount } if fee { if err := p.expectChar(c, "("); err != nil { diff --git a/test/til/lang_test.go b/test/til/lang_test.go index 893e4f0..a4346d1 100644 --- a/test/til/lang_test.go +++ b/test/til/lang_test.go @@ -117,7 +117,7 @@ func TestParseErrors(t *testing.T) { ` parser := newParser(strings.NewReader(s)) _, err := parser.parse() - assert.Equal(t, "Line 2: Deposit(1)A:: 10\n, err: strconv.Atoi: parsing \":\": invalid syntax", err.Error()) + assert.Equal(t, "Line 2: Deposit(1)A:: 10\n, err: Can not parse number for Amount: :", err.Error()) s = ` Type: Blockchain diff --git a/test/til/txs.go b/test/til/txs.go index 48d1afa..b9a090c 100644 --- a/test/til/txs.go +++ b/test/til/txs.go @@ -195,11 +195,11 @@ func (tc *Context) GenerateBlocks(set string) ([]common.BlockData, error) { FromBJJ: tc.Users[inst.from].BJJ.Public(), TokenID: inst.tokenID, Amount: big.NewInt(0), - LoadAmount: big.NewInt(int64(inst.loadAmount)), + LoadAmount: inst.loadAmount, Type: inst.typ, } if inst.typ == common.TxTypeCreateAccountDepositTransfer { - tx.Amount = big.NewInt(int64(inst.amount)) + tx.Amount = inst.amount } testTx := L1Tx{ lineNum: inst.lineNum, @@ -222,11 +222,11 @@ func (tc *Context) GenerateBlocks(set string) ([]common.BlockData, error) { tx := common.L1Tx{ TokenID: inst.tokenID, Amount: big.NewInt(0), - LoadAmount: big.NewInt(int64(inst.loadAmount)), + LoadAmount: inst.loadAmount, Type: inst.typ, } if inst.typ == common.TxTypeDepositTransfer { - tx.Amount = big.NewInt(int64(inst.amount)) + tx.Amount = inst.amount } testTx := L1Tx{ lineNum: inst.lineNum, @@ -243,7 +243,7 @@ func (tc *Context) GenerateBlocks(set string) ([]common.BlockData, error) { return nil, fmt.Errorf("Line %d: %s", inst.lineNum, err.Error()) } tx := common.L2Tx{ - Amount: big.NewInt(int64(inst.amount)), + Amount: inst.amount, Fee: common.FeeSelector(inst.fee), Type: common.TxTypeTransfer, EthBlockNum: tc.blockNum, @@ -264,7 +264,7 @@ func (tc *Context) GenerateBlocks(set string) ([]common.BlockData, error) { } tx := common.L1Tx{ TokenID: inst.tokenID, - Amount: big.NewInt(int64(inst.amount)), + Amount: inst.amount, LoadAmount: big.NewInt(0), Type: common.TxTypeForceTransfer, } @@ -285,7 +285,7 @@ func (tc *Context) GenerateBlocks(set string) ([]common.BlockData, error) { tx := common.L2Tx{ ToIdx: common.Idx(1), // as is an Exit Fee: common.FeeSelector(inst.fee), - Amount: big.NewInt(int64(inst.amount)), + Amount: inst.amount, Type: common.TxTypeExit, EthBlockNum: tc.blockNum, } @@ -306,7 +306,7 @@ func (tc *Context) GenerateBlocks(set string) ([]common.BlockData, error) { tx := common.L1Tx{ ToIdx: common.Idx(1), // as is an Exit TokenID: inst.tokenID, - Amount: big.NewInt(int64(inst.amount)), + Amount: inst.amount, LoadAmount: big.NewInt(0), Type: common.TxTypeForceExit, } @@ -547,7 +547,7 @@ func (tc *Context) GeneratePoolL2Txs(set string) ([]common.PoolL2Tx, error) { tx := common.PoolL2Tx{ FromIdx: tc.Users[inst.from].Accounts[inst.tokenID].Idx, TokenID: inst.tokenID, - Amount: big.NewInt(int64(inst.amount)), + Amount: inst.amount, Fee: common.FeeSelector(inst.fee), Nonce: tc.Users[inst.from].Accounts[inst.tokenID].Nonce, State: common.PoolL2TxStatePending, @@ -589,7 +589,7 @@ func (tc *Context) GeneratePoolL2Txs(set string) ([]common.PoolL2Tx, error) { ToIdx: common.Idx(1), // as is an Exit Fee: common.FeeSelector(inst.fee), TokenID: inst.tokenID, - Amount: big.NewInt(int64(inst.amount)), + Amount: inst.amount, Nonce: tc.Users[inst.from].Accounts[inst.tokenID].Nonce, State: common.PoolL2TxStatePending, Type: common.TxTypeExit,