test: add tests from #988

This commit is contained in:
Yoichi Hirai 2016-10-22 19:05:52 +02:00
parent 44305aeaf8
commit 922e4b3ce7
No known key found for this signature in database
GPG Key ID: E7B75D080FCF7992
2 changed files with 79 additions and 0 deletions

View File

@ -5681,6 +5681,72 @@ BOOST_AUTO_TEST_CASE(state_variable_under_contract_name)
BOOST_CHECK(callContractFunction("getStateVar()") == encodeArgs(u256(42)));
}
BOOST_AUTO_TEST_CASE(state_variable_local_variable_mixture)
{
char const* sourceCode = R"(
contract A {
uint x = 1;
uint y = 2;
function a() returns (uint x) {
x = A.y;
}
}
)";
compileAndRun(sourceCode);
BOOST_CHECK(callContractFunction("a()") == encodeArgs(u256(2)));
}
BOOST_AUTO_TEST_CASE(inherited_function) {
char const* sourceCode = R"(
contract A { function f() internal returns (uint) { return 1; } }
contract B is A {
function f() internal returns (uint) { return 2; }
function g() returns (uint) {
return A.f();
}
}
)";
compileAndRun(sourceCode, 0, "B");
BOOST_CHECK(callContractFunction("g()") == encodeArgs(u256(1)));
}
BOOST_AUTO_TEST_CASE(inherited_function_from_a_library) {
char const* sourceCode = R"(
library A { function f() internal returns (uint) { return 1; } }
contract B {
function f() internal returns (uint) { return 2; }
function g() returns (uint) {
return A.f();
}
}
)";
compileAndRun(sourceCode, 0, "B");
BOOST_CHECK(callContractFunction("g()") == encodeArgs(u256(1)));
}
BOOST_AUTO_TEST_CASE(multiple_inherited_state_vars)
{
char const* sourceCode = R"(
contract A {
uint x = 7;
}
contract B {
uint x = 9;
}
contract C is A, B {
function f() returns (uint) {
return A.x;
}
}
)";
compileAndRun(sourceCode, 0, "C");
BOOST_CHECK(callContractFunction("f()") == encodeArgs(u256(7)));
}
BOOST_AUTO_TEST_CASE(constant_string_literal)
{
char const* sourceCode = R"(

View File

@ -1036,6 +1036,19 @@ BOOST_AUTO_TEST_CASE(private_state_variable)
BOOST_CHECK_MESSAGE(function == nullptr, "Accessor function of an internal variable should not exist");
}
BOOST_AUTO_TEST_CASE(missing_state_variable)
{
char const* text = R"(
contract Scope {
function getStateVar() constant returns (uint stateVar) {
stateVar = Scope.stateVar; // should fail.
}
}
)";
BOOST_CHECK(expectError(text) == Error::Type::TypeError);
}
BOOST_AUTO_TEST_CASE(base_class_state_variable_accessor)
{
// test for issue #1126 https://github.com/ethereum/cpp-ethereum/issues/1126