Merge pull request #130 from LefterisJP/dynamic_array_push

Dynamic array push
This commit is contained in:
chriseth
2015-10-15 17:37:15 +02:00
4 changed files with 135 additions and 24 deletions
+40
View File
@@ -3452,6 +3452,7 @@ BOOST_AUTO_TEST_CASE(array_copy_target_leftover2)
asString(fromHex("0000000000000000"))
));
}
BOOST_AUTO_TEST_CASE(array_copy_storage_storage_struct)
{
char const* sourceCode = R"(
@@ -3476,6 +3477,45 @@ BOOST_AUTO_TEST_CASE(array_copy_storage_storage_struct)
BOOST_CHECK(m_state.storage(m_contractAddress).empty());
}
BOOST_AUTO_TEST_CASE(array_push)
{
char const* sourceCode = R"(
contract c {
uint[] data;
function test() returns (uint x, uint y, uint z, uint l) {
data.push(5);
x = data[0];
data.push(4);
y = data[1];
l = data.push(3);
z = data[2];
}
}
)";
compileAndRun(sourceCode);
BOOST_CHECK(callContractFunction("test()") == encodeArgs(5, 4, 3, 3));
}
BOOST_AUTO_TEST_CASE(byte_array_push)
{
char const* sourceCode = R"(
contract c {
bytes data;
function test() returns (bool x) {
if (data.push(5) != 1) return true;
if (data[0] != 5) return true;
data.push(4);
if (data[1] != 4) return true;
uint l = data.push(3);
if (data[2] != 3) return true;
if (l != 3) return true;
}
}
)";
compileAndRun(sourceCode);
BOOST_CHECK(callContractFunction("test()") == encodeArgs(false));
}
BOOST_AUTO_TEST_CASE(external_array_args)
{
char const* sourceCode = R"(