mirror of https://github.com/poanetwork/ex_abi.git
Added enum type (#135)
This commit is contained in:
parent
1c9efff6f8
commit
2b1976dfb4
|
@ -3,7 +3,7 @@ Definitions.
|
|||
INT = [0-9]+
|
||||
LETTERS = [a-zA-Z_]+
|
||||
WHITESPACE = [\s\t\n\r]
|
||||
TYPES = uint|int|address|bool|fixed|uint|ufixed|bytes|function|string|tuple
|
||||
TYPES = uint|int|address|bool|fixed|uint|ufixed|bytes|function|string|tuple|enum
|
||||
|
||||
Rules.
|
||||
|
||||
|
|
|
@ -49,7 +49,6 @@ type -> typename digits letters digits :
|
|||
double_juxt_type(list_to_atom(v('$1')), v('$3'), list_to_integer(v('$2')), list_to_integer(v('$4'))).
|
||||
type -> tuple : '$1'.
|
||||
|
||||
|
||||
Erlang code.
|
||||
|
||||
v({_Token, _Line, Value}) -> Value.
|
||||
|
@ -62,6 +61,7 @@ plain_type(bytes) -> bytes;
|
|||
plain_type(int) -> juxt_type(int, 256);
|
||||
plain_type(uint) -> juxt_type(uint, 256);
|
||||
plain_type(tuple) -> tuple;
|
||||
plain_type(enum) -> juxt_type(uint, 8);
|
||||
plain_type(fixed) -> double_juxt_type(fixed, x, 128, 19);
|
||||
plain_type(ufixed) -> double_juxt_type(ufixed, x, 128, 19).
|
||||
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
defmodule ABI.ParserTest do
|
||||
use ExUnit.Case, async: true
|
||||
|
||||
doctest ABI.Parser
|
||||
alias ABI.Parser
|
||||
|
||||
describe "parse" do
|
||||
test "successfully parses signatures" do
|
||||
assert %ABI.FunctionSelector{
|
||||
function: "simple",
|
||||
method_id: nil,
|
||||
type: nil,
|
||||
inputs_indexed: nil,
|
||||
state_mutability: nil,
|
||||
input_names: [],
|
||||
types: [uint: 256],
|
||||
returns: []
|
||||
} = Parser.parse!("simple(uint256)")
|
||||
|
||||
assert %ABI.FunctionSelector{
|
||||
function: "execTransaction",
|
||||
input_names: [],
|
||||
inputs_indexed: nil,
|
||||
method_id: nil,
|
||||
returns: [],
|
||||
state_mutability: nil,
|
||||
type: nil,
|
||||
types: [
|
||||
:address,
|
||||
{:uint, 256},
|
||||
:bytes,
|
||||
{:uint, 8},
|
||||
{:uint, 256},
|
||||
{:uint, 256},
|
||||
{:uint, 256},
|
||||
:address,
|
||||
:address,
|
||||
:bytes
|
||||
]
|
||||
} =
|
||||
Parser.parse!(
|
||||
"execTransaction(address,uint256,bytes,enum,uint256,uint256,uint256,address,address,bytes)"
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue