aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-08-16 02:13:05 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-08-24 20:46:18 +0800
commite9a9a07d94d35fd9b84b16b7bd4bf8ab0b396d22 (patch)
treed48855e64eaf52aeead353677752f3e17fd0ebe7
parent5668377c721c48f03518a02d0b3e45b5b61a52f6 (diff)
downloaddexon-solidity-e9a9a07d94d35fd9b84b16b7bd4bf8ab0b396d22.tar.gz
dexon-solidity-e9a9a07d94d35fd9b84b16b7bd4bf8ab0b396d22.tar.zst
dexon-solidity-e9a9a07d94d35fd9b84b16b7bd4bf8ab0b396d22.zip
Add ABI test for pure function
-rw-r--r--Changelog.md2
-rw-r--r--test/libsolidity/SolidityABIJSON.cpp55
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"(