diff options
author | Daniel Ellison <daniel@syrinx.net> | 2016-12-03 00:45:58 +0800 |
---|---|---|
committer | Daniel Ellison <daniel@syrinx.net> | 2016-12-07 00:16:56 +0800 |
commit | e23ef9db0265391e5a08d3ed432e0085faa78df1 (patch) | |
tree | 462e033ae4e3ed61f2e43421490a113361dd43ef | |
parent | 20a098e205020ce682c2bfe79e749167e87d41e1 (diff) | |
download | dexon-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.cpp | 54 |
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() } |