aionnetwork / AVM

Enabling Java code to run in a blockchain environment
https://theoan.com/
MIT License
49 stars 25 forks source link

Create exhaustive ABI test #338

Closed jeff-aion closed 5 years ago

jeff-aion commented 5 years ago

The test coverage of our ABI implementation (from the level of ABIEncoder/ABIDecoder) is not complete, although we should be able to come up with a generated solution to enumerate our various types and uses-cases without manually testing each case. I suspect that this is going to involve arguments and returns of each supported type, probably adding something at the end of the arguments (to ensure the parser has the right state), and a few unsupported cases (to ensure we fail correctly). Ideally, this is something we can test as both external calls as well as internal calls.

aionick commented 5 years ago

It's probably worth pointing out here that during my work on #334 I found a small issue with the ABIEncoder encoding Address[]. I've fixed it locally over there, and it should make its way into master soon enough.

arajasek commented 5 years ago

Created a random test that covers all possible argument types, including some edge-cases. The hope is that as this test is repeatedly run, we should achieve fairly thorough coverage of the encoder/decoder.