diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-07-09 06:30:17 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-09 06:30:17 +0800 |
commit | 7d1ddfc6522294808f17b4d40b4419acaa643324 (patch) | |
tree | c0276f49be7884fd54ee935089db047acf76a8d8 | |
parent | f129372245d1b4fd4ff6425e9f7cbe701247cdc1 (diff) | |
parent | e3c58eada6e7309ddbb7a460e0cd81e92dbd8c57 (diff) | |
download | dexon-solidity-7d1ddfc6522294808f17b4d40b4419acaa643324.tar.gz dexon-solidity-7d1ddfc6522294808f17b4d40b4419acaa643324.tar.zst dexon-solidity-7d1ddfc6522294808f17b4d40b4419acaa643324.zip |
Merge pull request #2540 from benjaminion/lll-for-test
LLL: Test cases for for and while loops.
-rw-r--r-- | test/liblll/EndToEndTest.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/liblll/EndToEndTest.cpp b/test/liblll/EndToEndTest.cpp index f3bfb438..7f4dd91a 100644 --- a/test/liblll/EndToEndTest.cpp +++ b/test/liblll/EndToEndTest.cpp @@ -387,6 +387,37 @@ BOOST_AUTO_TEST_CASE(assembly_codecopy) BOOST_CHECK(callFallback() == encodeArgs(string("abcdef"))); } +BOOST_AUTO_TEST_CASE(for_loop) +{ + char const* sourceCode = R"( + (returnlll + (seq + (for + { (set 'i 1) (set 'j 1) } ; INIT + (<= @i 10) ; PRED + [i]:(+ @i 1) ; POST + [j]:(* @j @i)) ; BODY + (return j 0x20))) + )"; + compileAndRun(sourceCode); + BOOST_CHECK(callFallback() == encodeArgs(u256(3628800))); // 10! +} + +BOOST_AUTO_TEST_CASE(while_loop) +{ + char const* sourceCode = R"( + (returnlll + (seq + ;; Euclid's GCD algorithm + (set 'a 1071) + (set 'b 462) + (while @b + [a]:(raw @b [b]:(mod @a @b))) + (return a 0x20))) + )"; + compileAndRun(sourceCode); + BOOST_CHECK(callFallback() == encodeArgs(u256(21))); // GCD(1071,462) +} BOOST_AUTO_TEST_CASE(keccak256_32bytes) { |