diff options
author | CJentzsch <jentzsch.software@gmail.com> | 2015-05-07 17:44:23 +0800 |
---|---|---|
committer | CJentzsch <jentzsch.software@gmail.com> | 2015-05-07 17:44:23 +0800 |
commit | 612ee398b7dae5f387f94fe169de4301929d5ac4 (patch) | |
tree | f5f22f1068cc2de0386c087d90593ad263c84992 | |
parent | 75982d444f52e864e56daf6054c2f13835b3a961 (diff) | |
parent | e66e225827624ccaaf88f4897715e6e5032849e0 (diff) | |
download | dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.gz dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.bz2 dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.lz dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.xz dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.tar.zst dexon-solidity-612ee398b7dae5f387f94fe169de4301929d5ac4.zip |
Merge remote-tracking branch 'upstream/develop' into walletTests
-rw-r--r-- | TestHelper.cpp | 10 | ||||
-rw-r--r-- | TestHelper.h | 2 | ||||
-rw-r--r-- | libsolidity/Assembly.cpp | 6 | ||||
-rw-r--r-- | libsolidity/SolidityEndToEndTest.cpp | 46 | ||||
-rw-r--r-- | libsolidity/SolidityOptimizer.cpp | 6 |
5 files changed, 61 insertions, 9 deletions
diff --git a/TestHelper.cpp b/TestHelper.cpp index eecf6f80..144a1a28 100644 --- a/TestHelper.cpp +++ b/TestHelper.cpp @@ -715,11 +715,10 @@ Options::Options() vmtrace = true; else if (arg == "--filltests") fillTests = true; - else if (arg.compare(0, 7, "--stats") == 0) + else if (arg == "--stats" && i + 1 < argc) { stats = true; - if (arg.size() > 7) - statsOutFile = arg.substr(8); // skip '=' char + statsOutFile = argv[i + 1]; } else if (arg == "--performance") performance = true; @@ -741,6 +740,11 @@ Options::Options() inputLimits = true; bigData = true; } + else if (arg == "--singletest" && i + 1 < argc) + { + singleTest = true; + singleTestName = argv[i + 1]; + } } } diff --git a/TestHelper.h b/TestHelper.h index 10e76aa9..02f509e4 100644 --- a/TestHelper.h +++ b/TestHelper.h @@ -188,6 +188,8 @@ public: /// Test selection /// @{ + bool singleTest = false; + std::string singleTestName; bool performance = false; bool quadratic = false; bool memory = false; diff --git a/libsolidity/Assembly.cpp b/libsolidity/Assembly.cpp index 8dcee7fb..ccc4bf81 100644 --- a/libsolidity/Assembly.cpp +++ b/libsolidity/Assembly.cpp @@ -17,20 +17,20 @@ /** * @author Lefteris Karapetsas <lefteris@ethdev.com> * @date 2015 - * Unit tests for Assembly Items from evmcore/Assembly.h + * Unit tests for Assembly Items from evmasm/Assembly.h */ #include <string> #include <iostream> #include <boost/test/unit_test.hpp> #include <libdevcore/Log.h> -#include <libevmcore/SourceLocation.h> +#include <libevmasm/SourceLocation.h> +#include <libevmasm/Assembly.h> #include <libsolidity/Scanner.h> #include <libsolidity/Parser.h> #include <libsolidity/NameAndTypeResolver.h> #include <libsolidity/Compiler.h> #include <libsolidity/AST.h> -#include <libevmcore/Assembly.h> using namespace std; using namespace dev::eth; 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" diff --git a/libsolidity/SolidityOptimizer.cpp b/libsolidity/SolidityOptimizer.cpp index ceb9c68d..9cdaa588 100644 --- a/libsolidity/SolidityOptimizer.cpp +++ b/libsolidity/SolidityOptimizer.cpp @@ -26,9 +26,9 @@ #include <boost/test/unit_test.hpp> #include <boost/lexical_cast.hpp> #include <test/libsolidity/solidityExecutionFramework.h> -#include <libevmcore/CommonSubexpressionEliminator.h> -#include <libevmcore/ControlFlowGraph.h> -#include <libevmcore/Assembly.h> +#include <libevmasm/CommonSubexpressionEliminator.h> +#include <libevmasm/ControlFlowGraph.h> +#include <libevmasm/Assembly.h> using namespace std; using namespace dev::eth; |