Add test.

This commit is contained in:
chriseth 2016-11-24 10:55:32 +01:00
parent 91ecc4533d
commit aa1fd6a879

View File

@ -22,8 +22,11 @@
#include "../TestHelper.h"
#include <libsolidity/interface/CompilerStack.h>
#include <json/json.h>
#include <libdevcore/Exceptions.h>
#include <libdevcore/SwarmHash.h>
#include <json/json.h>
namespace dev
{
@ -51,7 +54,7 @@ public:
);
}
private:
protected:
CompilerStack m_compilerStack;
Json::Reader m_reader;
};
@ -731,6 +734,23 @@ BOOST_AUTO_TEST_CASE(function_type)
checkInterface(sourceCode, interface);
}
BOOST_AUTO_TEST_CASE(metadata_stamp)
{
// Check that the metadata stamp is at the end of the runtime bytecode.
char const* sourceCode = R"(
pragma solidity >=0.0;
contract test {
function g(function(uint) external returns (uint) x) {}
}
)";
BOOST_REQUIRE(m_compilerStack.compile(std::string(sourceCode)));
bytes const& bytecode = m_compilerStack.runtimeObject("test").bytecode;
bytes hash = dev::swarmHash(m_compilerStack.onChainMetadata("test")).asBytes();
BOOST_REQUIRE(hash.size() == 32);
BOOST_REQUIRE(bytecode.size() >= hash.size());
BOOST_CHECK(std::equal(hash.begin(), hash.end(), bytecode.end() - 32));
}
BOOST_AUTO_TEST_SUITE_END()
}