diff options
author | Dimitry <dimitry@ethdev.com> | 2015-08-05 17:43:42 +0800 |
---|---|---|
committer | Dimitry <dimitry@ethdev.com> | 2015-08-11 17:16:38 +0800 |
commit | 641fce2b86afbd236899e7a7892f32ce6c4c38ee (patch) | |
tree | 5a46da3ecd28a483c65d0c724a96fbf2d72456a2 | |
parent | d4db96a7ba21b4d05eb28600070381ce483c9972 (diff) | |
download | dexon-solidity-641fce2b86afbd236899e7a7892f32ce6c4c38ee.tar dexon-solidity-641fce2b86afbd236899e7a7892f32ce6c4c38ee.tar.gz dexon-solidity-641fce2b86afbd236899e7a7892f32ce6c4c38ee.tar.bz2 dexon-solidity-641fce2b86afbd236899e7a7892f32ce6c4c38ee.tar.lz dexon-solidity-641fce2b86afbd236899e7a7892f32ce6c4c38ee.tar.xz dexon-solidity-641fce2b86afbd236899e7a7892f32ce6c4c38ee.tar.zst dexon-solidity-641fce2b86afbd236899e7a7892f32ce6c4c38ee.zip |
Coverage: tests
-rw-r--r-- | TestHelper.cpp | 59 | ||||
-rw-r--r-- | TestHelper.h | 8 |
2 files changed, 36 insertions, 31 deletions
diff --git a/TestHelper.cpp b/TestHelper.cpp index 39977975..fa889be1 100644 --- a/TestHelper.cpp +++ b/TestHelper.cpp @@ -191,7 +191,7 @@ void ImportTest::importState(json_spirit::mObject& _o, State& _state) BOOST_THROW_EXCEPTION(MissingFields() << errinfo_comment("Import State: Missing state fields!")); } -void ImportTest::importTransaction(json_spirit::mObject& _o) +void ImportTest::importTransaction (json_spirit::mObject const& _o, eth::Transaction& o_tr) { if (_o.count("secretKey") > 0) { @@ -202,18 +202,18 @@ void ImportTest::importTransaction(json_spirit::mObject& _o) assert(_o.count("value") > 0); assert(_o.count("data") > 0); - if (bigint(_o["nonce"].get_str()) >= c_max256plus1) + if (bigint(_o.at("nonce").get_str()) >= c_max256plus1) BOOST_THROW_EXCEPTION(ValueTooLarge() << errinfo_comment("Transaction 'nonce' is equal or greater than 2**256") ); - if (bigint(_o["gasPrice"].get_str()) >= c_max256plus1) + if (bigint(_o.at("gasPrice").get_str()) >= c_max256plus1) BOOST_THROW_EXCEPTION(ValueTooLarge() << errinfo_comment("Transaction 'gasPrice' is equal or greater than 2**256") ); - if (bigint(_o["gasLimit"].get_str()) >= c_max256plus1) + if (bigint(_o.at("gasLimit").get_str()) >= c_max256plus1) BOOST_THROW_EXCEPTION(ValueTooLarge() << errinfo_comment("Transaction 'gasLimit' is equal or greater than 2**256") ); - if (bigint(_o["value"].get_str()) >= c_max256plus1) + if (bigint(_o.at("value").get_str()) >= c_max256plus1) BOOST_THROW_EXCEPTION(ValueTooLarge() << errinfo_comment("Transaction 'value' is equal or greater than 2**256") ); - m_transaction = _o["to"].get_str().empty() ? - Transaction(toInt(_o["value"]), toInt(_o["gasPrice"]), toInt(_o["gasLimit"]), importData(_o), toInt(_o["nonce"]), Secret(_o["secretKey"].get_str())) : - Transaction(toInt(_o["value"]), toInt(_o["gasPrice"]), toInt(_o["gasLimit"]), Address(_o["to"].get_str()), importData(_o), toInt(_o["nonce"]), Secret(_o["secretKey"].get_str())); + o_tr = _o.at("to").get_str().empty() ? + Transaction(toInt(_o.at("value")), toInt(_o.at("gasPrice")), toInt(_o.at("gasLimit")), importData(_o), toInt(_o.at("nonce")), Secret(_o.at("secretKey").get_str())) : + Transaction(toInt(_o.at("value")), toInt(_o.at("gasPrice")), toInt(_o.at("gasLimit")), Address(_o.at("to").get_str()), importData(_o), toInt(_o.at("nonce")), Secret(_o.at("secretKey").get_str())); } else { @@ -221,14 +221,14 @@ void ImportTest::importTransaction(json_spirit::mObject& _o) RLP transactionRLP(transactionRLPStream.out()); try { - m_transaction = Transaction(transactionRLP.data(), CheckTransaction::Everything); + o_tr = Transaction(transactionRLP.data(), CheckTransaction::Everything); } catch (InvalidSignature) { // create unsigned transaction - m_transaction = _o["to"].get_str().empty() ? - Transaction(toInt(_o["value"]), toInt(_o["gasPrice"]), toInt(_o["gasLimit"]), importData(_o), toInt(_o["nonce"])) : - Transaction(toInt(_o["value"]), toInt(_o["gasPrice"]), toInt(_o["gasLimit"]), Address(_o["to"].get_str()), importData(_o), toInt(_o["nonce"])); + o_tr = _o.at("to").get_str().empty() ? + Transaction(toInt(_o.at("value")), toInt(_o.at("gasPrice")), toInt(_o.at("gasLimit")), importData(_o), toInt(_o.at("nonce"))) : + Transaction(toInt(_o.at("value")), toInt(_o.at("gasPrice")), toInt(_o.at("gasLimit")), Address(_o.at("to").get_str()), importData(_o), toInt(_o.at("nonce"))); } catch (Exception& _e) { @@ -237,6 +237,11 @@ void ImportTest::importTransaction(json_spirit::mObject& _o) } } +void ImportTest::importTransaction(json_spirit::mObject const& o_tr) +{ + importTransaction(o_tr, m_transaction); +} + void ImportTest::compareStates(State const& _stateExpect, State const& _statePost, AccountMaskMap const _expectedStateOptions, WhenError _throw) { #define CHECK(a,b) \ @@ -421,13 +426,13 @@ bytes importByteArray(std::string const& _str) return fromHex(_str.substr(0, 2) == "0x" ? _str.substr(2) : _str, WhenError::Throw); } -bytes importData(json_spirit::mObject& _o) +bytes importData(json_spirit::mObject const& _o) { bytes data; - if (_o["data"].type() == json_spirit::str_type) - data = importByteArray(_o["data"].get_str()); + if (_o.at("data").type() == json_spirit::str_type) + data = importByteArray(_o.at("data").get_str()); else - for (auto const& j: _o["data"].get_array()) + for (auto const& j: _o.at("data").get_array()) data.push_back(toByte(j)); return data; } @@ -633,46 +638,46 @@ void executeTests(const string& _name, const string& _testPathAppendix, const bo } } -RLPStream createRLPStreamFromTransactionFields(json_spirit::mObject& _tObj) +RLPStream createRLPStreamFromTransactionFields(json_spirit::mObject const& _tObj) { //Construct Rlp of the given transaction RLPStream rlpStream; rlpStream.appendList(_tObj.size()); if (_tObj.count("nonce")) - rlpStream << bigint(_tObj["nonce"].get_str()); + rlpStream << bigint(_tObj.at("nonce").get_str()); if (_tObj.count("gasPrice")) - rlpStream << bigint(_tObj["gasPrice"].get_str()); + rlpStream << bigint(_tObj.at("gasPrice").get_str()); if (_tObj.count("gasLimit")) - rlpStream << bigint(_tObj["gasLimit"].get_str()); + rlpStream << bigint(_tObj.at("gasLimit").get_str()); if (_tObj.count("to")) { - if (_tObj["to"].get_str().empty()) + if (_tObj.at("to").get_str().empty()) rlpStream << ""; else - rlpStream << importByteArray(_tObj["to"].get_str()); + rlpStream << importByteArray(_tObj.at("to").get_str()); } if (_tObj.count("value")) - rlpStream << bigint(_tObj["value"].get_str()); + rlpStream << bigint(_tObj.at("value").get_str()); if (_tObj.count("data")) rlpStream << importData(_tObj); if (_tObj.count("v")) - rlpStream << bigint(_tObj["v"].get_str()); + rlpStream << bigint(_tObj.at("v").get_str()); if (_tObj.count("r")) - rlpStream << bigint(_tObj["r"].get_str()); + rlpStream << bigint(_tObj.at("r").get_str()); if (_tObj.count("s")) - rlpStream << bigint(_tObj["s"].get_str()); + rlpStream << bigint(_tObj.at("s").get_str()); if (_tObj.count("extrafield")) - rlpStream << bigint(_tObj["extrafield"].get_str()); + rlpStream << bigint(_tObj.at("extrafield").get_str()); return rlpStream; } diff --git a/TestHelper.h b/TestHelper.h index 9d2625e1..5f2f8d6d 100644 --- a/TestHelper.h +++ b/TestHelper.h @@ -32,7 +32,6 @@ #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(); @@ -139,7 +138,8 @@ public: 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); - void importTransaction(json_spirit::mObject& _o); + 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(); @@ -168,7 +168,7 @@ protected: 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& _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); @@ -193,7 +193,7 @@ dev::eth::Ethash::BlockHeader constructHeader( 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& _tObj); +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); |