diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-08-23 02:09:35 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-23 02:09:35 +0800 |
commit | 0ffc5db82b24b4897d5d09cebbaadba37fa63b45 (patch) | |
tree | 023cefa5a9f00b0e6a5bf84d02745ab8e6666121 /test | |
parent | 210b4870a805620329793c8ba2177a3ff6e7b477 (diff) | |
parent | b1cdf81506de39502db0fb4a4b55ba8155f853ab (diff) | |
download | dexon-solidity-0ffc5db82b24b4897d5d09cebbaadba37fa63b45.tar dexon-solidity-0ffc5db82b24b4897d5d09cebbaadba37fa63b45.tar.gz dexon-solidity-0ffc5db82b24b4897d5d09cebbaadba37fa63b45.tar.bz2 dexon-solidity-0ffc5db82b24b4897d5d09cebbaadba37fa63b45.tar.lz dexon-solidity-0ffc5db82b24b4897d5d09cebbaadba37fa63b45.tar.xz dexon-solidity-0ffc5db82b24b4897d5d09cebbaadba37fa63b45.tar.zst dexon-solidity-0ffc5db82b24b4897d5d09cebbaadba37fa63b45.zip |
Merge pull request #2762 from ethereum/statemutability-view
Introduce view state-mutability (keep constant as alias)
Diffstat (limited to 'test')
-rw-r--r-- | test/libsolidity/SolidityABIJSON.cpp | 58 | ||||
-rw-r--r-- | test/libsolidity/SolidityNameAndTypeResolution.cpp | 6 | ||||
-rw-r--r-- | test/libsolidity/SolidityParser.cpp | 5 |
3 files changed, 65 insertions, 4 deletions
diff --git a/test/libsolidity/SolidityABIJSON.cpp b/test/libsolidity/SolidityABIJSON.cpp index 80b4b6ad..12fb1f9c 100644 --- a/test/libsolidity/SolidityABIJSON.cpp +++ b/test/libsolidity/SolidityABIJSON.cpp @@ -250,7 +250,63 @@ BOOST_AUTO_TEST_CASE(multiple_methods_order) checkInterface(sourceCode, interface); } -BOOST_AUTO_TEST_CASE(const_function) +BOOST_AUTO_TEST_CASE(view_function) +{ + char const* sourceCode = R"( + contract test { + function foo(uint a, uint b) returns(uint d) { return a + b; } + function boo(uint32 a) view 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": "view", + "type": "function", + "inputs": [{ + "name": "a", + "type": "uint32" + }], + "outputs": [ + { + "name": "b", + "type": "uint256" + } + ] + } + ])"; + + checkInterface(sourceCode, interface); +} + +// constant is an alias to view above +BOOST_AUTO_TEST_CASE(constant_function) { char const* sourceCode = R"( contract test { diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index f5f607ca..380978e8 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -1172,7 +1172,7 @@ BOOST_AUTO_TEST_CASE(state_variable_accessors) BOOST_REQUIRE(function && function->hasDeclaration()); auto returnParams = function->returnParameterTypes(); BOOST_CHECK_EQUAL(returnParams.at(0)->canonicalName(false), "uint256"); - BOOST_CHECK(function->isConstant()); + BOOST_CHECK(function->stateMutability() == StateMutability::View); function = retrieveFunctionBySignature(*contract, "map(uint256)"); BOOST_REQUIRE(function && function->hasDeclaration()); @@ -1180,7 +1180,7 @@ BOOST_AUTO_TEST_CASE(state_variable_accessors) BOOST_CHECK_EQUAL(params.at(0)->canonicalName(false), "uint256"); returnParams = function->returnParameterTypes(); BOOST_CHECK_EQUAL(returnParams.at(0)->canonicalName(false), "bytes4"); - BOOST_CHECK(function->isConstant()); + BOOST_CHECK(function->stateMutability() == StateMutability::View); function = retrieveFunctionBySignature(*contract, "multiple_map(uint256,uint256)"); BOOST_REQUIRE(function && function->hasDeclaration()); @@ -1189,7 +1189,7 @@ BOOST_AUTO_TEST_CASE(state_variable_accessors) BOOST_CHECK_EQUAL(params.at(1)->canonicalName(false), "uint256"); returnParams = function->returnParameterTypes(); BOOST_CHECK_EQUAL(returnParams.at(0)->canonicalName(false), "bytes4"); - BOOST_CHECK(function->isConstant()); + BOOST_CHECK(function->stateMutability() == StateMutability::View); } BOOST_AUTO_TEST_CASE(function_clash_with_state_variable_accessor) diff --git a/test/libsolidity/SolidityParser.cpp b/test/libsolidity/SolidityParser.cpp index 30dc80d9..8e84ead1 100644 --- a/test/libsolidity/SolidityParser.cpp +++ b/test/libsolidity/SolidityParser.cpp @@ -920,6 +920,11 @@ BOOST_AUTO_TEST_CASE(multiple_statemutability_specifiers) CHECK_PARSE_ERROR(text, "State mutability already specified as \"view\"."); text = R"( contract c { + function f() constant view {} + })"; + CHECK_PARSE_ERROR(text, "State mutability already specified as \"view\"."); + text = R"( + contract c { function f() payable constant {} })"; CHECK_PARSE_ERROR(text, "State mutability already specified as \"payable\"."); |