aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-08-22 06:21:27 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-08-23 01:24:22 +0800
commit70bb1e74788b7c2938ab15e14ee048cf9a1a7743 (patch)
treecb6c4d380afb50d3bb02bad986ea52b8a1eae56b /test/libsolidity
parent9e8d2a561f79be15f3ebdbdd139835b50baa43ce (diff)
downloaddexon-solidity-70bb1e74788b7c2938ab15e14ee048cf9a1a7743.tar
dexon-solidity-70bb1e74788b7c2938ab15e14ee048cf9a1a7743.tar.gz
dexon-solidity-70bb1e74788b7c2938ab15e14ee048cf9a1a7743.tar.bz2
dexon-solidity-70bb1e74788b7c2938ab15e14ee048cf9a1a7743.tar.lz
dexon-solidity-70bb1e74788b7c2938ab15e14ee048cf9a1a7743.tar.xz
dexon-solidity-70bb1e74788b7c2938ab15e14ee048cf9a1a7743.tar.zst
dexon-solidity-70bb1e74788b7c2938ab15e14ee048cf9a1a7743.zip
Update tests for view
Diffstat (limited to 'test/libsolidity')
-rw-r--r--test/libsolidity/SolidityABIJSON.cpp58
-rw-r--r--test/libsolidity/SolidityParser.cpp5
2 files changed, 62 insertions, 1 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/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\".");