aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/SolidityEndToEndTest.cpp
diff options
context:
space:
mode:
authorsubtly <subtly@users.noreply.github.com>2015-05-07 04:42:25 +0800
committersubtly <subtly@users.noreply.github.com>2015-05-07 04:42:25 +0800
commit242547d2e9049b9f713e505de4691a820a45a92b (patch)
treec1d48f66cb7f1570a4a4fb9f35a6e2b0d720d6d0 /libsolidity/SolidityEndToEndTest.cpp
parent2469f0c8bf11c09c7b5402eb3afdb4a3ce9cd5c1 (diff)
parentfce1a7f82e48ddf3d73e00a2998f003d77f3d5f9 (diff)
downloaddexon-solidity-242547d2e9049b9f713e505de4691a820a45a92b.tar
dexon-solidity-242547d2e9049b9f713e505de4691a820a45a92b.tar.gz
dexon-solidity-242547d2e9049b9f713e505de4691a820a45a92b.tar.bz2
dexon-solidity-242547d2e9049b9f713e505de4691a820a45a92b.tar.lz
dexon-solidity-242547d2e9049b9f713e505de4691a820a45a92b.tar.xz
dexon-solidity-242547d2e9049b9f713e505de4691a820a45a92b.tar.zst
dexon-solidity-242547d2e9049b9f713e505de4691a820a45a92b.zip
Merge branch 'develop' into discovery
Diffstat (limited to 'libsolidity/SolidityEndToEndTest.cpp')
-rw-r--r--libsolidity/SolidityEndToEndTest.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/libsolidity/SolidityEndToEndTest.cpp b/libsolidity/SolidityEndToEndTest.cpp
index 24e5f7b4..f168ad45 100644
--- a/libsolidity/SolidityEndToEndTest.cpp
+++ b/libsolidity/SolidityEndToEndTest.cpp
@@ -300,6 +300,52 @@ BOOST_AUTO_TEST_CASE(for_loop_simple_init_expr)
testSolidityAgainstCppOnRange("f(uint256)", for_loop_simple_init_expr_cpp, 0, 5);
}
+BOOST_AUTO_TEST_CASE(for_loop_break_continue)
+{
+ char const* sourceCode = R"(
+ contract test {
+ function f(uint n) returns (uint r)
+ {
+ uint i = 1;
+ uint k = 0;
+ for (i *= 5; k < n; i *= 7)
+ {
+ k++;
+ i += 4;
+ if (n % 3 == 0)
+ break;
+ i += 9;
+ if (n % 2 == 0)
+ continue;
+ i += 19;
+ }
+ return i;
+ }
+ }
+ )";
+ compileAndRun(sourceCode);
+
+ auto breakContinue = [](u256 const& n) -> u256
+ {
+ u256 i = 1;
+ u256 k = 0;
+ for (i *= 5; k < n; i *= 7)
+ {
+ k++;
+ i += 4;
+ if (n % 3 == 0)
+ break;
+ i += 9;
+ if (n % 2 == 0)
+ continue;
+ i += 19;
+ }
+ return i;
+ };
+
+ testSolidityAgainstCppOnRange("f(uint256)", breakContinue, 0, 10);
+}
+
BOOST_AUTO_TEST_CASE(calling_other_functions)
{
char const* sourceCode = "contract collatz {\n"