test custom errors with struct arguments

This commit is contained in:
Mark Spanbroek 2024-03-20 11:40:59 +01:00 committed by markspanbroek
parent 9c76803302
commit 6d6777e8c3
1 changed files with 41 additions and 0 deletions

View File

@ -10,6 +10,14 @@ suite "Contract custom errors":
SimpleError = object of SolidityError SimpleError = object of SolidityError
ErrorWithArguments = object of SolidityError ErrorWithArguments = object of SolidityError
arguments: tuple[one: UInt256, two: bool] arguments: tuple[one: UInt256, two: bool]
ErrorWithStaticStruct = object of SolidityError
arguments: tuple[one: Static, two: Static]
ErrorWithDynamicStruct = object of SolidityError
arguments: tuple[one: Dynamic, two: Dynamic]
ErrorWithDynamicAndStaticStruct = object of SolidityError
arguments: tuple[one: Dynamic, two: Static]
Static = (UInt256, UInt256)
Dynamic = (string, UInt256)
var contract: TestCustomErrors var contract: TestCustomErrors
var provider: JsonRpcProvider var provider: JsonRpcProvider
@ -43,3 +51,36 @@ suite "Contract custom errors":
except ErrorWithArguments as error: except ErrorWithArguments as error:
check error.arguments.one == 1 check error.arguments.one == 1
check error.arguments.two == true check error.arguments.two == true
test "handles error with static struct arguments":
proc revertsErrorWithStaticStruct(contract: TestCustomErrors)
{.contract, pure, errors:[ErrorWithStaticStruct].}
try:
await contract.revertsErrorWithStaticStruct()
fail()
except ErrorWithStaticStruct as error:
check error.arguments.one == (1.u256, 2.u256)
check error.arguments.two == (3.u256, 4.u256)
test "handles error with dynamic struct arguments":
proc revertsErrorWithDynamicStruct(contract: TestCustomErrors)
{.contract, pure, errors:[ErrorWithDynamicStruct].}
try:
await contract.revertsErrorWithDynamicStruct()
fail()
except ErrorWithDynamicStruct as error:
check error.arguments.one == ("1", 2.u256)
check error.arguments.two == ("3", 4.u256)
test "handles error with dynamic and static struct arguments":
proc revertsErrorWithDynamicAndStaticStruct(contract: TestCustomErrors)
{.contract, pure, errors:[ErrorWithDynamicAndStaticStruct].}
try:
await contract.revertsErrorWithDynamicAndStaticStruct()
fail()
except ErrorWithDynamicAndStaticStruct as error:
check error.arguments.one == ("1", 2.u256)
check error.arguments.two == (3.u256, 4.u256)