mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fixed assembly tests.
This commit is contained in:
parent
9db703b5b1
commit
a969203947
54
Assembly.cpp
54
Assembly.cpp
@ -74,17 +74,19 @@ eth::AssemblyItems compileContract(const string& _sourceCode)
|
||||
return AssemblyItems();
|
||||
}
|
||||
|
||||
void checkAssemblyLocations(AssemblyItems const& _items, std::vector<SourceLocation> _locations)
|
||||
void checkAssemblyLocations(AssemblyItems const& _items, vector<SourceLocation> const& _locations)
|
||||
{
|
||||
size_t i = 0;
|
||||
BOOST_CHECK_EQUAL(_items.size(), _locations.size());
|
||||
for (auto const& it: _items)
|
||||
for (size_t i = 0; i < min(_items.size(), _locations.size()); ++i)
|
||||
{
|
||||
BOOST_CHECK_MESSAGE(it.getLocation() == _locations[i],
|
||||
std::string("Location mismatch for assembly item ") + std::to_string(i));
|
||||
++i;
|
||||
BOOST_CHECK_MESSAGE(
|
||||
_items[i].getLocation() == _locations[i],
|
||||
"Location mismatch for assembly item " + to_string(i) + ". Found: " +
|
||||
to_string(_items[i].getLocation().start) + "-" +
|
||||
to_string(_items[i].getLocation().end) + ", expected: " +
|
||||
to_string(_locations[i].start) + "-" +
|
||||
to_string(_locations[i].end));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} // end anonymous namespace
|
||||
@ -93,31 +95,21 @@ BOOST_AUTO_TEST_SUITE(Assembly)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(location_test)
|
||||
{
|
||||
char const* sourceCode = "contract test {\n"
|
||||
" function f() returns (uint256 a)\n"
|
||||
" {\n"
|
||||
" return 16;\n"
|
||||
" }\n"
|
||||
"}\n";
|
||||
std::shared_ptr<std::string const> n = make_shared<std::string>("source");
|
||||
char const* sourceCode = R"(
|
||||
contract test {
|
||||
function f() returns (uint256 a) {
|
||||
return 16;
|
||||
}
|
||||
}
|
||||
)";
|
||||
shared_ptr<string const> n = make_shared<string>("source");
|
||||
AssemblyItems items = compileContract(sourceCode);
|
||||
std::vector<SourceLocation> locations {
|
||||
SourceLocation(0, 77, n), SourceLocation(0, 77, n),
|
||||
SourceLocation(0, 77, n), SourceLocation(0, 77, n),
|
||||
SourceLocation(0, 77, n), SourceLocation(0, 77, n),
|
||||
SourceLocation(0, 77, n), SourceLocation(0, 77, n),
|
||||
SourceLocation(), SourceLocation(),
|
||||
SourceLocation(0, 77, n), SourceLocation(0, 77, n),
|
||||
SourceLocation(), SourceLocation(), SourceLocation(),
|
||||
SourceLocation(0, 77, n), SourceLocation(0, 77, n),
|
||||
SourceLocation(0, 77, n), SourceLocation(0, 77, n),
|
||||
SourceLocation(0, 77, n), SourceLocation(0, 77, n),
|
||||
SourceLocation(0, 77, n),
|
||||
SourceLocation(18, 75, n), SourceLocation(40, 49, n),
|
||||
SourceLocation(61, 70, n), SourceLocation(61, 70, n), SourceLocation(61, 70, n),
|
||||
SourceLocation(), SourceLocation(),
|
||||
SourceLocation(61, 70, n), SourceLocation(61, 70, n), SourceLocation(61, 70, n)
|
||||
};
|
||||
vector<SourceLocation> locations =
|
||||
vector<SourceLocation>(11, SourceLocation(2, 75, n)) +
|
||||
vector<SourceLocation>(12, SourceLocation(20, 72, n)) +
|
||||
vector<SourceLocation>{SourceLocation(42, 51, n), SourceLocation(65, 67, n)} +
|
||||
vector<SourceLocation>(4, SourceLocation(58, 67, n)) +
|
||||
vector<SourceLocation>(3, SourceLocation(20, 72, n));
|
||||
checkAssemblyLocations(items, locations);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user