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_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)
|
BOOST_AUTO_TEST_CASE(constant_string_literal)
|
||||||
{
|
{
|
||||||
char const* sourceCode = R"(
|
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_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)
|
BOOST_AUTO_TEST_CASE(base_class_state_variable_accessor)
|
||||||
{
|
{
|
||||||
// test for issue #1126 https://github.com/ethereum/cpp-ethereum/issues/1126
|
// test for issue #1126 https://github.com/ethereum/cpp-ethereum/issues/1126
|
||||||
|
Loading…
Reference in New Issue
Block a user