mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge remote-tracking branch 'upstream/develop' into walletTests
This commit is contained in:
commit
612ee398b7
@ -715,11 +715,10 @@ Options::Options()
|
|||||||
vmtrace = true;
|
vmtrace = true;
|
||||||
else if (arg == "--filltests")
|
else if (arg == "--filltests")
|
||||||
fillTests = true;
|
fillTests = true;
|
||||||
else if (arg.compare(0, 7, "--stats") == 0)
|
else if (arg == "--stats" && i + 1 < argc)
|
||||||
{
|
{
|
||||||
stats = true;
|
stats = true;
|
||||||
if (arg.size() > 7)
|
statsOutFile = argv[i + 1];
|
||||||
statsOutFile = arg.substr(8); // skip '=' char
|
|
||||||
}
|
}
|
||||||
else if (arg == "--performance")
|
else if (arg == "--performance")
|
||||||
performance = true;
|
performance = true;
|
||||||
@ -741,6 +740,11 @@ Options::Options()
|
|||||||
inputLimits = true;
|
inputLimits = true;
|
||||||
bigData = true;
|
bigData = true;
|
||||||
}
|
}
|
||||||
|
else if (arg == "--singletest" && i + 1 < argc)
|
||||||
|
{
|
||||||
|
singleTest = true;
|
||||||
|
singleTestName = argv[i + 1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,6 +188,8 @@ public:
|
|||||||
|
|
||||||
/// Test selection
|
/// Test selection
|
||||||
/// @{
|
/// @{
|
||||||
|
bool singleTest = false;
|
||||||
|
std::string singleTestName;
|
||||||
bool performance = false;
|
bool performance = false;
|
||||||
bool quadratic = false;
|
bool quadratic = false;
|
||||||
bool memory = false;
|
bool memory = false;
|
||||||
|
@ -17,20 +17,20 @@
|
|||||||
/**
|
/**
|
||||||
* @author Lefteris Karapetsas <lefteris@ethdev.com>
|
* @author Lefteris Karapetsas <lefteris@ethdev.com>
|
||||||
* @date 2015
|
* @date 2015
|
||||||
* Unit tests for Assembly Items from evmcore/Assembly.h
|
* Unit tests for Assembly Items from evmasm/Assembly.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
#include <libdevcore/Log.h>
|
#include <libdevcore/Log.h>
|
||||||
#include <libevmcore/SourceLocation.h>
|
#include <libevmasm/SourceLocation.h>
|
||||||
|
#include <libevmasm/Assembly.h>
|
||||||
#include <libsolidity/Scanner.h>
|
#include <libsolidity/Scanner.h>
|
||||||
#include <libsolidity/Parser.h>
|
#include <libsolidity/Parser.h>
|
||||||
#include <libsolidity/NameAndTypeResolver.h>
|
#include <libsolidity/NameAndTypeResolver.h>
|
||||||
#include <libsolidity/Compiler.h>
|
#include <libsolidity/Compiler.h>
|
||||||
#include <libsolidity/AST.h>
|
#include <libsolidity/AST.h>
|
||||||
#include <libevmcore/Assembly.h>
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace dev::eth;
|
using namespace dev::eth;
|
||||||
|
@ -300,6 +300,52 @@ BOOST_AUTO_TEST_CASE(for_loop_simple_init_expr)
|
|||||||
testSolidityAgainstCppOnRange("f(uint256)", for_loop_simple_init_expr_cpp, 0, 5);
|
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)
|
BOOST_AUTO_TEST_CASE(calling_other_functions)
|
||||||
{
|
{
|
||||||
char const* sourceCode = "contract collatz {\n"
|
char const* sourceCode = "contract collatz {\n"
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <test/libsolidity/solidityExecutionFramework.h>
|
#include <test/libsolidity/solidityExecutionFramework.h>
|
||||||
#include <libevmcore/CommonSubexpressionEliminator.h>
|
#include <libevmasm/CommonSubexpressionEliminator.h>
|
||||||
#include <libevmcore/ControlFlowGraph.h>
|
#include <libevmasm/ControlFlowGraph.h>
|
||||||
#include <libevmcore/Assembly.h>
|
#include <libevmasm/Assembly.h>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace dev::eth;
|
using namespace dev::eth;
|
||||||
|
Loading…
Reference in New Issue
Block a user