diff options
author | Daniel Ellison <daniel@syrinx.net> | 2016-12-02 22:00:33 +0800 |
---|---|---|
committer | Daniel Ellison <daniel@syrinx.net> | 2016-12-07 00:16:56 +0800 |
commit | a91b712ab8bfc5928428e308855244fb77766ca3 (patch) | |
tree | df823f190807adbc80efb2695dc57102e61196f5 /test/liblll/EndToEndTest.cpp | |
parent | 1b6861e6c99ff244180eec8aac9dee50d6e45520 (diff) | |
download | dexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.tar dexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.tar.gz dexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.tar.bz2 dexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.tar.lz dexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.tar.xz dexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.tar.zst dexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.zip |
Added tests for exponent operator.
Diffstat (limited to 'test/liblll/EndToEndTest.cpp')
-rw-r--r-- | test/liblll/EndToEndTest.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/liblll/EndToEndTest.cpp b/test/liblll/EndToEndTest.cpp index 824e53cd..980f8d10 100644 --- a/test/liblll/EndToEndTest.cpp +++ b/test/liblll/EndToEndTest.cpp @@ -57,6 +57,43 @@ BOOST_AUTO_TEST_CASE(enclosed_panic) BOOST_REQUIRE(m_output.empty()); } +BOOST_AUTO_TEST_CASE(exp_operator_const) +{ + char const* sourceCode = R"( + (returnlll + (return (exp 2 3))) + )"; + compileAndRun(sourceCode); + BOOST_CHECK(callFallback() == toBigEndian(u256(8))); +} + +BOOST_AUTO_TEST_CASE(exp_operator_const_signed) +{ + char const* sourceCode = R"( + (returnlll + (return (exp (- 0 2) 3))) + )"; + compileAndRun(sourceCode); + BOOST_CHECK(callFallback() == toBigEndian(u256(-8))); +} + +BOOST_AUTO_TEST_CASE(exp_operator_parameter) +{ + char const* sourceCode = R"( + (seq + (def 'function (function-hash code-body) + (when (= (div (calldataload 0x00) (exp 2 224)) function-hash) + code-body)) + (returnlll + (seq + (function 0xb3de648b + (return (exp 2 (calldataload 0x04)))) + (jump 0x02)))) + )"; + compileAndRun(sourceCode); + BOOST_CHECK(callContractFunction("f(uint256)", u256(16)) == toBigEndian(u256(65536))); +} + BOOST_AUTO_TEST_SUITE_END() } |