test: add tests for #1131

The tests are about enum inheritance.
This commit is contained in:
Yoichi Hirai 2016-10-18 13:02:43 +02:00
parent 984b8ac1b5
commit f967623a5b
No known key found for this signature in database
GPG Key ID: E7B75D080FCF7992
2 changed files with 68 additions and 0 deletions

View File

@ -3314,6 +3314,57 @@ BOOST_AUTO_TEST_CASE(using_enums)
BOOST_CHECK(callContractFunction("getChoice()") == encodeArgs(2));
}
BOOST_AUTO_TEST_CASE(using_contract_enums_with_explicit_contract_name)
{
char const* sourceCode = R"(
contract test {
enum Choice { A, B, C }
function answer () returns (test.Choice _ret)
{
_ret = test.Choice.B;
}
}
)";
compileAndRun(sourceCode);
BOOST_CHECK(callContractFunction("answer()") == encodeArgs(1));
}
BOOST_AUTO_TEST_CASE(using_inherited_enum)
{
char const* sourceCode = R"(
contract base {
enum Choice { A, B, C }
}
contract test is base {
function answer () returns (Choice _ret)
{
_ret = Choice.B;
}
}
)";
compileAndRun(sourceCode);
BOOST_CHECK(callContractFunction("answer()") == encodeArgs(1));
}
BOOST_AUTO_TEST_CASE(using_inherited_enum_excplicitly)
{
char const* sourceCode = R"(
contract base {
enum Choice { A, B, C }
}
contract test is base {
function answer () returns (base.Choice _ret)
{
_ret = base.Choice.B;
}
}
)";
compileAndRun(sourceCode);
BOOST_CHECK(callContractFunction("answer()") == encodeArgs(1));
}
BOOST_AUTO_TEST_CASE(constructing_enums_from_ints)
{
char const* sourceCode = R"(

View File

@ -1500,6 +1500,23 @@ BOOST_AUTO_TEST_CASE(enum_duplicate_values)
BOOST_CHECK(expectError(text) == Error::Type::DeclarationError);
}
BOOST_AUTO_TEST_CASE(enum_name_resolution_under_current_contract_name)
{
char const* text = R"(
contract A {
enum Foo {
First,
Second
}
function a() {
A.Foo;
}
}
)";
BOOST_CHECK(success(text));
}
BOOST_AUTO_TEST_CASE(private_visibility)
{
char const* sourceCode = R"(