aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Ellison <daniel@syrinx.net>2016-12-03 00:45:58 +0800
committerDaniel Ellison <daniel@syrinx.net>2016-12-07 00:16:56 +0800
commite23ef9db0265391e5a08d3ed432e0085faa78df1 (patch)
tree462e033ae4e3ed61f2e43421490a113361dd43ef
parent20a098e205020ce682c2bfe79e749167e87d41e1 (diff)
downloaddexon-solidity-e23ef9db0265391e5a08d3ed432e0085faa78df1.tar.gz
dexon-solidity-e23ef9db0265391e5a08d3ed432e0085faa78df1.tar.zst
dexon-solidity-e23ef9db0265391e5a08d3ed432e0085faa78df1.zip
Added tests for LLL constructors. Fixed a few tab issues.
-rw-r--r--test/liblll/EndToEndTest.cpp54
1 files changed, 49 insertions, 5 deletions
diff --git a/test/liblll/EndToEndTest.cpp b/test/liblll/EndToEndTest.cpp
index f4e9e414..5acf7822 100644
--- a/test/liblll/EndToEndTest.cpp
+++ b/test/liblll/EndToEndTest.cpp
@@ -55,9 +55,9 @@ 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_CHECK(callFallback() == toBigEndian(u256(8)));
}
BOOST_AUTO_TEST_CASE(exp_operator_const_signed)
@@ -65,9 +65,9 @@ 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_CHECK(callFallback() == toBigEndian(u256(-8)));
}
BOOST_AUTO_TEST_CASE(exp_operator_on_range)
@@ -78,11 +78,55 @@ BOOST_AUTO_TEST_CASE(exp_operator_on_range)
(when (= (div (calldataload 0x00) (exp 2 224)) 0xb3de648b)
(return (exp 2 (calldataload 0x04))))
(jump 0x02)))
- )";
+ )";
compileAndRun(sourceCode);
testContractAgainstCppOnRange("f(uint256)", [](u256 const& a) -> u256 { return u256(1 << a.convert_to<int>()); }, 0, 16);
}
+BOOST_AUTO_TEST_CASE(constructor_argument_internal_numeric)
+{
+ char const* sourceCode = R"(
+ (seq
+ (sstore 0x00 65535)
+ (returnlll
+ (return @@0x00)))
+ )";
+ compileAndRun(sourceCode);
+ BOOST_CHECK(callFallback() == encodeArgs(u256(65535)));
+}
+
+BOOST_AUTO_TEST_CASE(constructor_argument_internal_string)
+{
+ char const* sourceCode = R"(
+ (seq
+ (sstore 0x00 "test")
+ (returnlll
+ (return @@0x00)))
+ )";
+ compileAndRun(sourceCode);
+ BOOST_CHECK(callFallback() == encodeArgs("test"));
+}
+
+BOOST_AUTO_TEST_CASE(constructor_arguments_external)
+{
+ char const* sourceCode = R"(
+ (seq
+ (codecopy 0x00 (bytecodesize) 64)
+ (sstore 0x00 @0x00)
+ (sstore 0x01 @0x20)
+ (returnlll
+ (seq
+ (when (= (div (calldataload 0x00) (exp 2 224)) 0xf2c9ecd8)
+ (return @@0x00))
+ (when (= (div (calldataload 0x00) (exp 2 224)) 0x89ea642f)
+ (return @@0x01))
+ (jump 0x02))))
+ )";
+ compileAndRun(sourceCode, 0, "", encodeArgs(u256(65535), "test"));
+ BOOST_CHECK(callContractFunction("getNumber()") == encodeArgs(u256(65535)));
+ BOOST_CHECK(callContractFunction("getString()") == encodeArgs("test"));
+}
+
BOOST_AUTO_TEST_SUITE_END()
}