diff options
author | Christian <c@ethdev.com> | 2015-02-23 08:31:05 +0800 |
---|---|---|
committer | Christian <c@ethdev.com> | 2015-02-24 01:28:30 +0800 |
commit | a5eb2a3990626a384bd48a070a02dda0174d5d95 (patch) | |
tree | d4e034c0daa716ea4437c8033c0941032d664626 /SolidityEndToEndTest.cpp | |
parent | ae9013f3679abca2a895410db621263fc9c22390 (diff) | |
download | dexon-solidity-a5eb2a3990626a384bd48a070a02dda0174d5d95.tar dexon-solidity-a5eb2a3990626a384bd48a070a02dda0174d5d95.tar.gz dexon-solidity-a5eb2a3990626a384bd48a070a02dda0174d5d95.tar.bz2 dexon-solidity-a5eb2a3990626a384bd48a070a02dda0174d5d95.tar.lz dexon-solidity-a5eb2a3990626a384bd48a070a02dda0174d5d95.tar.xz dexon-solidity-a5eb2a3990626a384bd48a070a02dda0174d5d95.tar.zst dexon-solidity-a5eb2a3990626a384bd48a070a02dda0174d5d95.zip |
Index and length access for dynamic arrays.
Diffstat (limited to 'SolidityEndToEndTest.cpp')
-rw-r--r-- | SolidityEndToEndTest.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/SolidityEndToEndTest.cpp b/SolidityEndToEndTest.cpp index 0c4c79ac..6f85aec9 100644 --- a/SolidityEndToEndTest.cpp +++ b/SolidityEndToEndTest.cpp @@ -2694,6 +2694,35 @@ BOOST_AUTO_TEST_CASE(fixed_arrays_in_storage) BOOST_CHECK(callContractFunction("getLengths()") == encodeArgs(u256(1) << 10, (u256(1) << 10) + 3)); } +BOOST_AUTO_TEST_CASE(dynamic_arrays_in_storage) +{ + char const* sourceCode = R"( + contract c { + struct Data { uint x; uint y; } + Data[] data; + uint[] ids; + function setIDStatic(uint id) { ids[2] = id; } + function setID(uint index, uint id) { ids[index] = id; } + function setData(uint index, uint x, uint y) { data[index].x = x; data[index].y = y; } + function getID(uint index) returns (uint) { return ids[index]; } + function getData(uint index) returns (uint x, uint y) { x = data[index].x; y = data[index].y; } + function getLengths() returns (uint l1, uint l2) { l1 = data.length; l2 = ids.length; } + function setLengths(uint l1, uint l2) { data.length = l1; ids.length = l2; } + } + )"; + compileAndRun(sourceCode); + BOOST_CHECK(callContractFunction("setIDStatic(uint256)", 11) == bytes()); + BOOST_CHECK(callContractFunction("getID(uint256)", 2) == encodeArgs(11)); + BOOST_CHECK(callContractFunction("setID(uint256,uint256)", 7, 8) == bytes()); + BOOST_CHECK(callContractFunction("getID(uint256)", 7) == encodeArgs(8)); + BOOST_CHECK(callContractFunction("setData(uint256,uint256,uint256)", 7, 8, 9) == bytes()); + BOOST_CHECK(callContractFunction("setData(uint256,uint256,uint256)", 8, 10, 11) == bytes()); + BOOST_CHECK(callContractFunction("getData(uint256)", 7) == encodeArgs(8, 9)); + BOOST_CHECK(callContractFunction("getData(uint256)", 8) == encodeArgs(10, 11)); + BOOST_CHECK(callContractFunction("setLengths(uint256,uint256)", 48, 49) == bytes()); + BOOST_CHECK(callContractFunction("getLengths()") == encodeArgs(48, 49)); +} + BOOST_AUTO_TEST_SUITE_END() } |