diff options
author | chriseth <chris@ethereum.org> | 2016-11-11 00:13:45 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-11 00:13:45 +0800 |
commit | a40dcfef1257c4b159eb8248ecb0f837b42d8ead (patch) | |
tree | 0d50154179583e9f2e6d7588c22f88cade14717c /test/libsolidity/SolidityEndToEndTest.cpp | |
parent | 81118de51273a5aef711b321f20ee02da9e55533 (diff) | |
parent | 4524ad08701939cc22d28494c57dda1cdfba9e10 (diff) | |
download | dexon-solidity-a40dcfef1257c4b159eb8248ecb0f837b42d8ead.tar.gz dexon-solidity-a40dcfef1257c4b159eb8248ecb0f837b42d8ead.tar.zst dexon-solidity-a40dcfef1257c4b159eb8248ecb0f837b42d8ead.zip |
Merge pull request #768 from roadriverrail/do_while_loops
Add support for do/while loops
Diffstat (limited to 'test/libsolidity/SolidityEndToEndTest.cpp')
-rw-r--r-- | test/libsolidity/SolidityEndToEndTest.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index 8600443d..a1430b02 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -353,6 +353,34 @@ BOOST_AUTO_TEST_CASE(while_loop) testSolidityAgainstCppOnRange("f(uint256)", while_loop_cpp, 0, 5); } + +BOOST_AUTO_TEST_CASE(do_while_loop) +{ + char const* sourceCode = "contract test {\n" + " function f(uint n) returns(uint nfac) {\n" + " nfac = 1;\n" + " var i = 2;\n" + " do { nfac *= i++; } while (i <= n);\n" + " }\n" + "}\n"; + compileAndRun(sourceCode); + + auto do_while_loop_cpp = [](u256 const& n) -> u256 + { + u256 nfac = 1; + u256 i = 2; + do + { + nfac *= i++; + } + while (i <= n); + + return nfac; + }; + + testSolidityAgainstCppOnRange("f(uint256)", do_while_loop_cpp, 0, 5); +} + BOOST_AUTO_TEST_CASE(nested_loops) { // tests that break and continue statements in nested loops jump to the correct place |