diff options
author | Yoichi Hirai <i@yoichihirai.com> | 2016-11-08 18:37:44 +0800 |
---|---|---|
committer | Yoichi Hirai <i@yoichihirai.com> | 2016-11-12 00:47:48 +0800 |
commit | 8856adce8f1829cecf7353c64c8cf07058da6f4f (patch) | |
tree | 4862a45fa1d6b0d213fa1652b28cf52b6cb8a701 /test | |
parent | e6098f0039868222c758e4d10f23ace59d1a3195 (diff) | |
download | dexon-solidity-8856adce8f1829cecf7353c64c8cf07058da6f4f.tar.gz dexon-solidity-8856adce8f1829cecf7353c64c8cf07058da6f4f.tar.zst dexon-solidity-8856adce8f1829cecf7353c64c8cf07058da6f4f.zip |
test: add tests that witness issue #1311
Diffstat (limited to 'test')
-rw-r--r-- | test/libsolidity/SolidityEndToEndTest.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index bab54fab..90547ad9 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -3342,6 +3342,30 @@ BOOST_AUTO_TEST_CASE(using_enums) BOOST_CHECK(callContractFunction("getChoice()") == encodeArgs(2)); } +BOOST_AUTO_TEST_CASE(enum_explicit_overflow) +{ + char const* sourceCode = R"( + contract test { + enum ActionChoices { GoLeft, GoRight, GoStraight } + function test() + { + } + function getChoiceExp(uint x) returns (uint d) + { + choice = ActionChoices(x); + d = uint256(choice); + } + ActionChoices choice; + } + )"; + compileAndRun(sourceCode); + // These should throw + BOOST_CHECK(callContractFunction("getChoiceExp(uint256)", 3) == encodeArgs()); + // These should work + BOOST_CHECK(callContractFunction("getChoiceExp(uint256)", 2) == encodeArgs(2)); + BOOST_CHECK(callContractFunction("getChoiceExp(uint256)", 0) == encodeArgs(0)); +} + BOOST_AUTO_TEST_CASE(using_contract_enums_with_explicit_contract_name) { char const* sourceCode = R"( |