Add test.

This commit is contained in:
chriseth committed 2016-12-01 16:03:59 +01:00
1 parent 91ecc4533d
commit aa1fd6a879
1 file changed
+22 -2
+22 -2
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()
}