diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-08-16 02:13:05 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2017-08-24 20:46:18 +0800 |
commit | e9a9a07d94d35fd9b84b16b7bd4bf8ab0b396d22 (patch) | |
tree | d48855e64eaf52aeead353677752f3e17fd0ebe7 | |
parent | 5668377c721c48f03518a02d0b3e45b5b61a52f6 (diff) | |
download | dexon-solidity-e9a9a07d94d35fd9b84b16b7bd4bf8ab0b396d22.tar.gz dexon-solidity-e9a9a07d94d35fd9b84b16b7bd4bf8ab0b396d22.tar.zst dexon-solidity-e9a9a07d94d35fd9b84b16b7bd4bf8ab0b396d22.zip |
Add ABI test for pure function
-rw-r--r-- | Changelog.md | 2 | ||||
-rw-r--r-- | test/libsolidity/SolidityABIJSON.cpp | 55 |
2 files changed, 56 insertions, 1 deletions
diff --git a/Changelog.md b/Changelog.md index fbbf0761..8c540a28 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,7 +2,7 @@ Features: * Introduce ``pure`` functions. The pureness is not enforced yet, use with care. - * ABI JSON: Include new field ``statemutability`` with values ``view``, ``nonpayable`` and ``payable``. + * ABI JSON: Include new field ``statemutability`` with values ``pure``, ``view``, ``nonpayable`` and ``payable``. * Analyzer: Experimental partial support for Z3 SMT checker. * Parser: Display previous visibility specifier in error if multiple are found. * Parser: Introduce ``view`` keyword on functions (``constant`` remains an alias for ``view``). diff --git a/test/libsolidity/SolidityABIJSON.cpp b/test/libsolidity/SolidityABIJSON.cpp index 12fb1f9c..dd51d926 100644 --- a/test/libsolidity/SolidityABIJSON.cpp +++ b/test/libsolidity/SolidityABIJSON.cpp @@ -361,6 +361,61 @@ BOOST_AUTO_TEST_CASE(constant_function) checkInterface(sourceCode, interface); } +BOOST_AUTO_TEST_CASE(pure_function) +{ + char const* sourceCode = R"( + contract test { + function foo(uint a, uint b) returns(uint d) { return a + b; } + function boo(uint32 a) pure returns(uint b) { return a * 4; } + } + )"; + + char const* interface = R"([ + { + "name": "foo", + "constant": false, + "payable" : false, + "statemutability": "nonpayable", + "type": "function", + "inputs": [ + { + "name": "a", + "type": "uint256" + }, + { + "name": "b", + "type": "uint256" + } + ], + "outputs": [ + { + "name": "d", + "type": "uint256" + } + ] + }, + { + "name": "boo", + "constant": true, + "payable" : false, + "statemutability": "pure", + "type": "function", + "inputs": [{ + "name": "a", + "type": "uint32" + }], + "outputs": [ + { + "name": "b", + "type": "uint256" + } + ] + } + ])"; + + checkInterface(sourceCode, interface); +} + BOOST_AUTO_TEST_CASE(events) { char const* sourceCode = R"( |