From e26466b729de5bbb4cd578272fab2795cb66aee8 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Mon, 28 Nov 2016 00:58:41 +0000 Subject: LLL: add end-to-end tests --- test/liblll/ExecutionFramework.h | 70 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 test/liblll/ExecutionFramework.h (limited to 'test/liblll/ExecutionFramework.h') diff --git a/test/liblll/ExecutionFramework.h b/test/liblll/ExecutionFramework.h new file mode 100644 index 00000000..37162e7f --- /dev/null +++ b/test/liblll/ExecutionFramework.h @@ -0,0 +1,70 @@ +/* + This file is part of solidity. + + solidity is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + solidity is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with solidity. If not, see . +*/ +/** + * @author Alex Beregszaszi + * @date 2016 + * Framework for executing LLL contracts and testing them via RPC. + */ + +#pragma once + +#include + +#include "../ExecutionFramework.h" + +#include + +using namespace dev::test; + +namespace dev +{ +namespace lll +{ + +namespace test +{ + +class LLLExecutionFramework: public ExecutionFramework +{ + +public: + LLLExecutionFramework(); + + virtual bytes const& compileAndRunWithoutCheck( + std::string const& _sourceCode, + u256 const& _value = 0, + std::string const& _contractName = "", + bytes const& _arguments = bytes(), + std::map const& _libraryAddresses = std::map() + ) override + { + std::vector errors; + bytes bytecode = eth::compileLLL(_sourceCode, m_optimize, &errors); + if (!errors.empty()) + { + for (auto const& error: errors) + std::cerr << error << std::endl; + BOOST_ERROR("Compiling contract failed"); + } + sendMessage(bytecode + _arguments, true, _value); + return m_output; + } +}; + +} +} +} // end namespaces -- cgit