You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
function echidna_balanceAlwaysLowerEqualTotalSupply(addresstokenHolder) publicviewreturns (bool) {
returnbalanceOf(tokenHolder) <= totalSupply;
}
and it aborted with Test "echidna_balanceAlwaysLowerEqualTotalSupply" has arguments, aborting
i understand why.
it could be interesting to support this. it would open up a whole new set of properties that
can be tested with echidna. maybe this is possible by using echidna as a library. i've yet to look into that.
i imagine it could fuzz (argument) addresses first, that occur somewhere in storage of the contract or that it has used before.
The text was updated successfully, but these errors were encountered:
It's definitely possible using echidna as a library, you'd just wanna write something like checkETest but with some argument logic. You could either hardcode your addresses and check them exhaustively and keep the type, or make something of type MonadGen m => VM -> m Bool and write something like eCommand but with a more constrained m so you can actually fuzz the addresses. I think the simplest way to do the former is just and <$> forM (addresses :: [AbiValue]) $ \a -> [some test parametrized on an address, returning a bool].
I'm not sure I can think of a general way to have tests with arguments in the CLI that I'm happy with, so I'll close this for now, but if you have a more specific behavior you'd like to see I'm happy to investigate that.
just some thoughts.
i tried
and it aborted with
Test "echidna_balanceAlwaysLowerEqualTotalSupply" has arguments, aborting
i understand why.
it could be interesting to support this. it would open up a whole new set of properties that
can be tested with echidna. maybe this is possible by using echidna as a library. i've yet to look into that.
i imagine it could fuzz (argument) addresses first, that occur somewhere in storage of the contract or that it has used before.
The text was updated successfully, but these errors were encountered: