Skip to content

Commit

Permalink
Value conversion fix.
Browse files Browse the repository at this point in the history
  • Loading branch information
Maxim committed Mar 24, 2019
1 parent 080220e commit acaa81c
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 5 deletions.
3 changes: 3 additions & 0 deletions model/evaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ func (c *Evaler) Run(expr string, expected ...ExprType) (interface{}, error) {
b, _ := f.Int(nil)
return b, nil
}
if err := checkExpected(exprType); err != nil {
return nil, err
}
return f, nil
case ExprTypeInterger:
b, ok := big.NewInt(0).SetString(exprValue, 10)
Expand Down
1 change: 0 additions & 1 deletion model/valuer.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ func denominateValue(val *big.Int, denominator string) *big.Int {
case "gwei":
v := big.NewInt(1)
v = v.Mul(val, big.NewInt(1e9))
v = v.Mul(v, val)
return v
case "ether":
v := big.NewInt(1)
Expand Down
70 changes: 70 additions & 0 deletions model/valuer_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package model

import (
"context"
"math/big"
"testing"

"github.com/AtlantPlatform/ethfw"
"github.com/stretchr/testify/assert"
)

func TestValuerParse(t *testing.T) {
assert := assert.New(t)

ctx := AppContext{context.Background()}
ev, err := Valuer("5").Parse(ctx, nil, nil)
if assert.NoError(err) {
assert.EqualValues(ev.Value, big.NewInt(5))
assert.EqualValues(ev.ValueWei, ethfw.BigWei(big.NewInt(5)))
assert.EqualValues(ev.Denominator, "")
}
ev, err = Valuer("0.5 ether").Parse(ctx, nil, nil)
assert.Error(err)

ev, err = Valuer("5 * 1e8 * 1e9").Parse(ctx, nil, nil)
if assert.NoError(err) {
expected := ethfw.ToWei(0.5).ToInt()
assert.EqualValues(expected, ev.Value)
assert.EqualValues(expected, ev.ValueWei.ToInt())
assert.EqualValues(ev.Denominator, "")
}

ev, err = Valuer("5 * 1e8 gwei").Parse(ctx, nil, nil)
if assert.NoError(err) {
expected := ethfw.ToWei(0.5).ToInt()
assert.EqualValues(expected, ev.Value)
assert.EqualValues(expected, ev.ValueWei.ToInt())
assert.EqualValues(ev.Denominator, "gwei")
}
}

func TestDenominateValue(t *testing.T) {
assert := assert.New(t)

input := []struct {
Input *big.Int
Denominator string
Expected *big.Int
}{
{big.NewInt(1), "wei", big.NewInt(1)},
{big.NewInt(1), "gwei", ethfw.Gwei(1).ToInt()},
{big.NewInt(1), "ether", ethfw.ToWei(1).ToInt()},
{big.NewInt(1), "eth", big.NewInt(1)},
{big.NewInt(1), "kek", big.NewInt(1)},
{big.NewInt(int64(5e8)), "gwei", ethfw.ToWei(0.5).ToInt()},
}
for _, in := range input {
assert.EqualValues(in.Expected, denominateValue(in.Input, in.Denominator))
}
}

func TestIsCommonDenominator(t *testing.T) {
assert := assert.New(t)

assert.True(IsCommonDenominator("wei"))
assert.True(IsCommonDenominator("gwei"))
assert.True(IsCommonDenominator("ether"))
assert.True(IsCommonDenominator("eth"))
assert.False(IsCommonDenominator("kek"))
}
13 changes: 9 additions & 4 deletions vendor/github.com/ethereum/go-ethereum/accounts/abi/reflect.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit acaa81c

Please sign in to comment.