aboutsummaryrefslogtreecommitdiffstats
path: root/test/TestHelper.h
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-08-20 06:55:41 +0800
committerchriseth <c@ethdev.com>2015-08-20 06:55:41 +0800
commit8d9eb6830781cc107d09a92a59f71914a341ad3c (patch)
tree39fd4a279c6aa7fefa314e10b615bc37137905d4 /test/TestHelper.h
parent4c8b2202575b8c169b6dda9f81a0c6f171361df9 (diff)
downloaddexon-solidity-8d9eb6830781cc107d09a92a59f71914a341ad3c.tar.gz
dexon-solidity-8d9eb6830781cc107d09a92a59f71914a341ad3c.tar.zst
dexon-solidity-8d9eb6830781cc107d09a92a59f71914a341ad3c.zip
Modularise CMakeLists files and integrate tests.
Diffstat (limited to 'test/TestHelper.h')
-rw-r--r--test/TestHelper.h177
1 files changed, 0 insertions, 177 deletions
diff --git a/test/TestHelper.h b/test/TestHelper.h
index e5cf1323..0bf62224 100644
--- a/test/TestHelper.h
+++ b/test/TestHelper.h
@@ -25,47 +25,8 @@
#include <boost/test/unit_test.hpp>
#include <boost/filesystem.hpp>
-#include "JsonSpiritHeaders.h"
-#include <libethcore/Ethash.h>
-#include <libethereum/State.h>
-#include <libevm/ExtVMFace.h>
-#include <libtestutils/Common.h>
-
-#ifdef NOBOOST
- #define TBOOST_REQUIRE(arg) if(arg == false) throw dev::Exception();
- #define TBOOST_REQUIRE_EQUAL(arg1, arg2) if(arg1 != arg2) throw dev::Exception();
- #define TBOOST_CHECK_EQUAL(arg1, arg2) if(arg1 != arg2) throw dev::Exception();
- #define TBOOST_CHECK(arg) if(arg == false) throw dev::Exception();
- #define TBOOST_REQUIRE_MESSAGE(arg1, arg2) if(arg1 == false) throw dev::Exception();
- #define TBOOST_CHECK_MESSAGE(arg1, arg2) if(arg1 == false) throw dev::Exception();
- #define TBOOST_WARN_MESSAGE(arg1, arg2) throw dev::Exception();
- #define TBOOST_ERROR(arg) throw dev::Exception();
-#else
- #define TBOOST_REQUIRE(arg) BOOST_REQUIRE(arg)
- #define TBOOST_REQUIRE_EQUAL(arg1, arg2) BOOST_REQUIRE_EQUAL(arg1, arg2)
- #define TBOOST_CHECK(arg) BOOST_CHECK(arg)
- #define TBOOST_CHECK_EQUAL(arg1, arg2) BOOST_CHECK_EQUAL(arg1, arg2)
- #define TBOOST_CHECK_MESSAGE(arg1, arg2) BOOST_CHECK_MESSAGE(arg1, arg2)
- #define TBOOST_REQUIRE_MESSAGE(arg1, arg2) BOOST_REQUIRE_MESSAGE(arg1, arg2)
- #define TBOOST_WARN_MESSAGE(arg1, arg2) BOOST_WARN_MESSAGE(arg1, arg2)
- #define TBOOST_ERROR(arg) BOOST_ERROR(arg)
-#endif
-
namespace dev
{
-namespace eth
-{
-
-class Client;
-class State;
-
-void mine(Client& c, int numBlocks);
-void connectClients(Client& c1, Client& c2);
-void mine(Block& _s, BlockChain const& _bc);
-void mine(Ethash::BlockHeader& _bi);
-
-}
-
namespace test
{
@@ -121,144 +82,6 @@ namespace test
} \
while (0)
-enum class testType
-{
- StateTests,
- BlockChainTests,
- Other
-};
-
-class ImportTest
-{
-public:
- ImportTest(json_spirit::mObject& _o, bool isFiller, testType testTemplate = testType::StateTests);
-
- // imports
- void importEnv(json_spirit::mObject& _o);
- static void importState(json_spirit::mObject& _o, eth::State& _state);
- static void importState(json_spirit::mObject& _o, eth::State& _state, eth::AccountMaskMap& o_mask);
- static void importTransaction (json_spirit::mObject const& _o, eth::Transaction& o_tr);
- void importTransaction(json_spirit::mObject const& _o);
- static json_spirit::mObject& makeAllFieldsHex(json_spirit::mObject& _o);
-
- bytes executeTest();
- int exportTest(bytes const& _output);
- static int compareStates(eth::State const& _stateExpect, eth::State const& _statePost, eth::AccountMaskMap const _expectedStateOptions = eth::AccountMaskMap(), WhenError _throw = WhenError::Throw);
-
- eth::State m_statePre;
- eth::State m_statePost;
- eth::EnvInfo m_envInfo;
- eth::Transaction m_transaction;
- eth::LogEntries m_logs;
- eth::LogEntries m_logsExpected;
-
-private:
- json_spirit::mObject& m_testObject;
-};
-
-class ZeroGasPricer: public eth::GasPricer
-{
-protected:
- u256 ask(eth::Block const&) const override { return 0; }
- u256 bid(eth::TransactionPriority = eth::TransactionPriority::Medium) const override { return 0; }
-};
-
-// helping functions
-u256 toInt(json_spirit::mValue const& _v);
-byte toByte(json_spirit::mValue const& _v);
-bytes importCode(json_spirit::mObject& _o);
-bytes importData(json_spirit::mObject const& _o);
-bytes importByteArray(std::string const& _str);
-eth::LogEntries importLog(json_spirit::mArray& _o);
-json_spirit::mArray exportLog(eth::LogEntries _logs);
-void checkOutput(bytes const& _output, json_spirit::mObject& _o);
-void checkStorage(std::map<u256, u256> _expectedStore, std::map<u256, u256> _resultStore, Address _expectedAddr);
-void checkLog(eth::LogEntries _resultLogs, eth::LogEntries _expectedLogs);
-void checkCallCreates(eth::Transactions _resultCallCreates, eth::Transactions _expectedCallCreates);
-dev::eth::Ethash::BlockHeader constructHeader(
- h256 const& _parentHash,
- h256 const& _sha3Uncles,
- Address const& _coinbaseAddress,
- h256 const& _stateRoot,
- h256 const& _transactionsRoot,
- h256 const& _receiptsRoot,
- dev::eth::LogBloom const& _logBloom,
- u256 const& _difficulty,
- u256 const& _number,
- u256 const& _gasLimit,
- u256 const& _gasUsed,
- u256 const& _timestamp,
- bytes const& _extraData);
-void updateEthashSeal(dev::eth::Ethash::BlockHeader& _header, h256 const& _mixHash, dev::eth::Nonce const& _nonce);
-void executeTests(const std::string& _name, const std::string& _testPathAppendix, const boost::filesystem::path _pathToFiller, std::function<void(json_spirit::mValue&, bool)> doTests);
-void userDefinedTest(std::function<void(json_spirit::mValue&, bool)> doTests);
-RLPStream createRLPStreamFromTransactionFields(json_spirit::mObject const& _tObj);
-eth::LastHashes lastHashes(u256 _currentBlockNumber);
-json_spirit::mObject fillJsonWithState(eth::State _state);
-json_spirit::mObject fillJsonWithTransaction(eth::Transaction _txn);
-
-//Fill Test Functions
-void doTransactionTests(json_spirit::mValue& _v, bool _fillin);
-void doStateTests(json_spirit::mValue& v, bool _fillin);
-void doVMTests(json_spirit::mValue& v, bool _fillin);
-void doBlockchainTests(json_spirit::mValue& _v, bool _fillin);
-void doRlpTests(json_spirit::mValue& v, bool _fillin);
-
-/*template<typename mapType>
-void checkAddresses(mapType& _expectedAddrs, mapType& _resultAddrs)
-{
- for (auto& resultPair : _resultAddrs)
- {
- auto& resultAddr = resultPair.first;
- auto expectedAddrIt = _expectedAddrs.find(resultAddr);
- if (expectedAddrIt == _expectedAddrs.end())
- TBOOST_ERROR("Missing result address " << resultAddr);
- }
- TBOOST_CHECK((_expectedAddrs == _resultAddrs));
-}*/
-
-enum class Verbosity
-{
- Full,
- NiceReport,
- None
-};
-
-class Options
-{
-public:
- bool vmtrace = false; ///< Create EVM execution tracer // TODO: Link with log verbosity?
- bool fillTests = false; ///< Create JSON test files from execution results
- bool stats = false; ///< Execution time stats
- std::string statsOutFile; ///< Stats output file. "out" for standard output
- bool checkState = false;///< Throw error when checking test states
- bool fulloutput = false;///< Replace large output to just it's length
- Verbosity logVerbosity = Verbosity::NiceReport;
-
- /// Test selection
- /// @{
- bool singleTest = false;
- std::string singleTestFile;
- std::string singleTestName;
- bool performance = false;
- bool quadratic = false;
- bool memory = false;
- bool inputLimits = false;
- bool bigData = false;
- bool wallet = false;
- bool nonetwork = true;
- bool nodag = true;
- /// @}
-
- /// Get reference to options
- /// The first time used, options are parsed
- static Options const& get();
-
-private:
- Options();
- Options(Options const&) = delete;
-};
-
/// Allows observing test execution process.
/// This class also provides methods for registering and notifying the listener
class Listener