From e23ef9db0265391e5a08d3ed432e0085faa78df1 Mon Sep 17 00:00:00 2001 From: Daniel Ellison Date: Fri, 2 Dec 2016 11:45:58 -0500 Subject: Added tests for LLL constructors. Fixed a few tab issues. --- test/liblll/EndToEndTest.cpp | 54 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 5 deletions(-) (limited to 'test/liblll') 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()); }, 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() } -- cgit