improved the test

This commit is contained in:
LianaHus 2015-09-23 17:26:52 +02:00
parent 5ba559beaf
commit c096c3c349
2 changed files with 16 additions and 5 deletions

View File

@ -857,8 +857,9 @@ u256 ArrayType::memorySize() const
{ {
solAssert(!isDynamicallySized(), ""); solAssert(!isDynamicallySized(), "");
solAssert(m_location == DataLocation::Memory, ""); solAssert(m_location == DataLocation::Memory, "");
u256 size = m_length * m_baseType->memoryHeadSize();
return m_length * m_baseType->memoryHeadSize(); solAssert(size <= numeric_limits<unsigned>::max(), "Array size does not fit unsigned.");
return size;
} }
TypePointer ArrayType::copyForLocation(DataLocation _location, bool _isPointer) const TypePointer ArrayType::copyForLocation(DataLocation _location, bool _isPointer) const

View File

@ -5329,19 +5329,29 @@ BOOST_AUTO_TEST_CASE(fixed_arrays_as_return_type)
{ {
char const* sourceCode = R"( char const* sourceCode = R"(
contract A { contract A {
function f() constant returns (uint16[5] arr) function f(uint16 input) constant returns (uint16[5] arr)
{ {
arr[0] = input;
arr[1] = ++input;
arr[2] = ++input;
arr[3] = ++input;
arr[4] = ++input;
} }
} }
contract B { contract B {
function f() function f() returns (uint16[5] res, uint16[5] res2)
{ {
var a = new A(); var a = new A();
uint16[5] memory res = a.f(); res = a.f(2);
res2 = a.f(1000);
} }
} }
)"; )";
compileAndRun(sourceCode, 0, "B"); compileAndRun(sourceCode, 0, "B");
BOOST_CHECK(callContractFunction("f()") == encodeArgs(
u256(2), u256(3), u256(4), u256(5), u256(6), // first return argument
u256(1000), u256(1001), u256(1002), u256(1003), u256(1004)) // second return argument
);
} }
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()