@@ -16,6 +16,8 @@ func TestParseSelector(t *testing.T) {
1616 result = append (result , ArgumentMarshaling {name , typeName , typeName , nil , false })
1717 } else if components , ok := typeOrComponents .([]ArgumentMarshaling ); ok {
1818 result = append (result , ArgumentMarshaling {name , "tuple" , "tuple" , components , false })
19+ } else if components , ok := typeOrComponents .([][]ArgumentMarshaling ); ok {
20+ result = append (result , ArgumentMarshaling {name , "tuple[]" , "tuple[]" , components [0 ], false })
1921 } else {
2022 log .Fatalf ("unexpected type %T" , typeOrComponents )
2123 }
@@ -34,6 +36,13 @@ func TestParseSelector(t *testing.T) {
3436 {"singleNest(bytes32,uint8,(uint256,uint256),address)" , "singleNest" , mkType ("bytes32" , "uint8" , mkType ("uint256" , "uint256" ), "address" )},
3537 {"multiNest(address,(uint256[],uint256),((address,bytes32),uint256))" , "multiNest" ,
3638 mkType ("address" , mkType ("uint256[]" , "uint256" ), mkType (mkType ("address" , "bytes32" ), "uint256" ))},
39+ {"arrayNest((uint256,uint256)[],bytes32)" , "arrayNest" , mkType ([][]ArgumentMarshaling {mkType ("uint256" , "uint256" )}, "bytes32" )},
40+ {"multiArrayNest((uint256,uint256)[],(uint256,uint256)[])" , "multiArrayNest" ,
41+ mkType ([][]ArgumentMarshaling {mkType ("uint256" , "uint256" )}, [][]ArgumentMarshaling {mkType ("uint256" , "uint256" )})},
42+ {"singleArrayNestAndArray((uint256,uint256)[],bytes32[])" , "singleArrayNestAndArray" ,
43+ mkType ([][]ArgumentMarshaling {mkType ("uint256" , "uint256" )}, "bytes32[]" )},
44+ {"singleArrayNestWithArrayAndArray((uint256[],address[2],uint8[4][][5])[],bytes32[])" , "singleArrayNestWithArrayAndArray" ,
45+ mkType ([][]ArgumentMarshaling {mkType ("uint256[]" , "address[2]" , "uint8[4][][5]" )}, "bytes32[]" )},
3746 }
3847 for i , tt := range tests {
3948 selector , err := ParseSelector (tt .input )
0 commit comments