mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
test: add tests from #988
This commit is contained in:
parent
44305aeaf8
commit
922e4b3ce7
@ -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"(
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user