aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDaniel Ellison <daniel@syrinx.net>2016-12-02 22:00:33 +0800
committerDaniel Ellison <daniel@syrinx.net>2016-12-07 00:16:56 +0800
commita91b712ab8bfc5928428e308855244fb77766ca3 (patch)
treedf823f190807adbc80efb2695dc57102e61196f5 /test
parent1b6861e6c99ff244180eec8aac9dee50d6e45520 (diff)
downloaddexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.tar.gz
dexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.tar.zst
dexon-solidity-a91b712ab8bfc5928428e308855244fb77766ca3.zip
Added tests for exponent operator.
Diffstat (limited to 'test')
-rw-r--r--test/liblll/EndToEndTest.cpp37
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()
}