Merge branch 'develop' into whisper

This commit is contained in:
subtly 2015-04-05 22:42:51 +02:00
commit 052fa7d877
21 changed files with 71 additions and 21 deletions

View File

@ -20,6 +20,8 @@
* Unit tests for Assembly Items from evmcore/Assembly.h * Unit tests for Assembly Items from evmcore/Assembly.h
*/ */
#if ETH_SOLIDITY
#include <string> #include <string>
#include <iostream> #include <iostream>
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
@ -119,3 +121,4 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} // end namespaces } // end namespaces
#endif

View File

@ -44,7 +44,9 @@ target_link_libraries(testeth ${CURL_LIBRARIES})
target_link_libraries(testeth ethereum) target_link_libraries(testeth ethereum)
target_link_libraries(testeth ethcore) target_link_libraries(testeth ethcore)
target_link_libraries(testeth secp256k1) target_link_libraries(testeth secp256k1)
target_link_libraries(testeth solidity) if (SOLIDITY)
target_link_libraries(testeth solidity)
endif ()
target_link_libraries(testeth testutils) target_link_libraries(testeth testutils)
if (NOT HEADLESS AND NOT JUSTTESTS) if (NOT HEADLESS AND NOT JUSTTESTS)
target_link_libraries(testeth webthree) target_link_libraries(testeth webthree)

View File

@ -120,11 +120,15 @@ BOOST_AUTO_TEST_CASE(blocks)
ETH_CHECK_EQUAL(expectedBlockInfoBloom, _blockInfo.logBloom); ETH_CHECK_EQUAL(expectedBlockInfoBloom, _blockInfo.logBloom);
ETH_CHECK_EQUAL(expectedBlockInfoCoinbase, _blockInfo.coinbaseAddress); ETH_CHECK_EQUAL(expectedBlockInfoCoinbase, _blockInfo.coinbaseAddress);
ETH_CHECK_EQUAL(expectedBlockInfoDifficulty, _blockInfo.difficulty); ETH_CHECK_EQUAL(expectedBlockInfoDifficulty, _blockInfo.difficulty);
ETH_CHECK_EQUAL_COLLECTIONS(expectedBlockInfoExtraData.begin(), expectedBlockInfoExtraData.end(), ETH_CHECK_EQUAL_COLLECTIONS(
_blockInfo.extraData.begin(), _blockInfo.extraData.end()); expectedBlockInfoExtraData.begin(),
expectedBlockInfoExtraData.end(),
_blockInfo.extraData.begin(),
_blockInfo.extraData.end()
);
ETH_CHECK_EQUAL(expectedBlockInfoGasLimit, _blockInfo.gasLimit); ETH_CHECK_EQUAL(expectedBlockInfoGasLimit, _blockInfo.gasLimit);
ETH_CHECK_EQUAL(expectedBlockInfoGasUsed, _blockInfo.gasUsed); ETH_CHECK_EQUAL(expectedBlockInfoGasUsed, _blockInfo.gasUsed);
ETH_CHECK_EQUAL(expectedBlockInfoHash, _blockInfo.hash); ETH_CHECK_EQUAL(expectedBlockInfoHash, _blockInfo.hash());
ETH_CHECK_EQUAL(expectedBlockInfoMixHash, _blockInfo.mixHash); ETH_CHECK_EQUAL(expectedBlockInfoMixHash, _blockInfo.mixHash);
ETH_CHECK_EQUAL(expectedBlockInfoNonce, _blockInfo.nonce); ETH_CHECK_EQUAL(expectedBlockInfoNonce, _blockInfo.nonce);
ETH_CHECK_EQUAL(expectedBlockInfoNumber, _blockInfo.number); ETH_CHECK_EQUAL(expectedBlockInfoNumber, _blockInfo.number);
@ -155,8 +159,12 @@ BOOST_AUTO_TEST_CASE(blocks)
u256 expectedTransactionSignatureS = h256(fromHex(_t["s"].asString())); u256 expectedTransactionSignatureS = h256(fromHex(_t["s"].asString()));
// unsigned expectedTransactionSignatureV = jsToInt(t["v"].asString()); // unsigned expectedTransactionSignatureV = jsToInt(t["v"].asString());
ETH_CHECK_EQUAL_COLLECTIONS(expectedTransactionData.begin(), expectedTransactionData.end(), ETH_CHECK_EQUAL_COLLECTIONS(
_transaction.data().begin(), _transaction.data().end()); expectedTransactionData.begin(),
expectedTransactionData.end(),
_transaction.data().begin(),
_transaction.data().end()
);
ETH_CHECK_EQUAL(expectedTransactionGasLimit, _transaction.gas()); ETH_CHECK_EQUAL(expectedTransactionGasLimit, _transaction.gas());
ETH_CHECK_EQUAL(expectedTransactionGasPrice, _transaction.gasPrice()); ETH_CHECK_EQUAL(expectedTransactionGasPrice, _transaction.gasPrice());
ETH_CHECK_EQUAL(expectedTransactionNonce, _transaction.nonce()); ETH_CHECK_EQUAL(expectedTransactionNonce, _transaction.nonce());

View File

@ -19,6 +19,7 @@
* @date 2014 * @date 2014
* Unit tests for the solidity compiler JSON Interface output. * Unit tests for the solidity compiler JSON Interface output.
*/ */
#if ETH_SOLIDITY
#include "TestHelper.h" #include "TestHelper.h"
#include <libsolidity/CompilerStack.h> #include <libsolidity/CompilerStack.h>
@ -500,3 +501,5 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} }
} }
#endif

View File

@ -20,6 +20,8 @@
* Unit tests for the solidity compiler. * Unit tests for the solidity compiler.
*/ */
#if ETH_SOLIDITY
#include <string> #include <string>
#include <iostream> #include <iostream>
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
@ -192,3 +194,4 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} // end namespaces } // end namespaces
#endif

View File

@ -1,4 +1,3 @@
/* /*
This file is part of cpp-ethereum. This file is part of cpp-ethereum.
@ -22,6 +21,8 @@
* Unit tests for the solidity expression compiler, testing the behaviour of the code. * Unit tests for the solidity expression compiler, testing the behaviour of the code.
*/ */
#if ETH_SOLIDITY
#include <string> #include <string>
#include <tuple> #include <tuple>
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
@ -3627,3 +3628,4 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} // end namespaces } // end namespaces
#endif

View File

@ -1,4 +1,3 @@
/* /*
This file is part of cpp-ethereum. This file is part of cpp-ethereum.
@ -21,6 +20,8 @@
* Unit tests for the solidity expression compiler. * Unit tests for the solidity expression compiler.
*/ */
#if ETH_SOLIDITY
#include <string> #include <string>
#include <libdevcore/Log.h> #include <libdevcore/Log.h>
@ -491,3 +492,4 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} // end namespaces } // end namespaces
#endif

View File

@ -20,6 +20,8 @@
* Unit tests for generating source interfaces for Solidity contracts. * Unit tests for generating source interfaces for Solidity contracts.
*/ */
#if ETH_SOLIDITY
#include "TestHelper.h" #include "TestHelper.h"
#include <libsolidity/CompilerStack.h> #include <libsolidity/CompilerStack.h>
#include <libsolidity/AST.h> #include <libsolidity/AST.h>
@ -147,3 +149,5 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} }
} }
#endif

View File

@ -20,6 +20,8 @@
* Unit tests for the name and type resolution of the solidity parser. * Unit tests for the name and type resolution of the solidity parser.
*/ */
#if ETH_SOLIDITY
#include <string> #include <string>
#include <libdevcore/Log.h> #include <libdevcore/Log.h>
@ -1627,3 +1629,4 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} // end namespaces } // end namespaces
#endif

View File

@ -20,6 +20,8 @@
* Unit tests for the solidity compiler JSON Interface output. * Unit tests for the solidity compiler JSON Interface output.
*/ */
#if ETH_SOLIDITY
#include "TestHelper.h" #include "TestHelper.h"
#include <json/json.h> #include <json/json.h>
#include <libsolidity/CompilerStack.h> #include <libsolidity/CompilerStack.h>
@ -537,3 +539,5 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} }
} }
#endif

View File

@ -1,4 +1,3 @@
/* /*
This file is part of cpp-ethereum. This file is part of cpp-ethereum.
@ -21,6 +20,8 @@
* Tests for the Solidity optimizer. * Tests for the Solidity optimizer.
*/ */
#if ETH_SOLIDITY
#include <string> #include <string>
#include <tuple> #include <tuple>
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
@ -573,3 +574,5 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} }
} // end namespaces } // end namespaces
#endif

View File

@ -20,6 +20,8 @@
* Unit tests for the solidity parser. * Unit tests for the solidity parser.
*/ */
#if ETH_SOLIDITY
#include <string> #include <string>
#include <memory> #include <memory>
#include <libdevcore/Log.h> #include <libdevcore/Log.h>
@ -845,3 +847,4 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} // end namespaces } // end namespaces
#endif

View File

@ -20,6 +20,8 @@
* Unit tests for the solidity scanner. * Unit tests for the solidity scanner.
*/ */
#if ETH_SOLIDITY
#include <libsolidity/Scanner.h> #include <libsolidity/Scanner.h>
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
@ -286,3 +288,5 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} }
} // end namespaces } // end namespaces
#endif

View File

@ -20,6 +20,8 @@
* Unit tests for the type system of Solidity. * Unit tests for the type system of Solidity.
*/ */
#if ETH_SOLIDITY
#include <libsolidity/Types.h> #include <libsolidity/Types.h>
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
@ -91,3 +93,5 @@ BOOST_AUTO_TEST_SUITE_END()
} }
} }
} }
#endif

View File

@ -70,7 +70,10 @@ namespace test
struct ValueTooLarge: virtual Exception {}; struct ValueTooLarge: virtual Exception {};
bigint const c_max256plus1 = bigint(1) << 256; bigint const c_max256plus1 = bigint(1) << 256;
ImportTest::ImportTest(json_spirit::mObject& _o, bool isFiller) : m_statePre(Address(_o["env"].get_obj()["currentCoinbase"].get_str()), OverlayDB(), eth::BaseState::Empty), m_statePost(Address(_o["env"].get_obj()["currentCoinbase"].get_str()), OverlayDB(), eth::BaseState::Empty), m_TestObject(_o) ImportTest::ImportTest(json_spirit::mObject& _o, bool isFiller):
m_statePre(OverlayDB(), eth::BaseState::Empty, Address(_o["env"].get_obj()["currentCoinbase"].get_str())),
m_statePost(OverlayDB(), eth::BaseState::Empty, Address(_o["env"].get_obj()["currentCoinbase"].get_str())),
m_TestObject(_o)
{ {
importEnv(_o["env"].get_obj()); importEnv(_o["env"].get_obj());
importState(_o["pre"].get_obj(), m_statePre); importState(_o["pre"].get_obj(), m_statePre);
@ -92,7 +95,7 @@ void ImportTest::importEnv(json_spirit::mObject& _o)
assert(_o.count("currentCoinbase") > 0); assert(_o.count("currentCoinbase") > 0);
assert(_o.count("currentNumber") > 0); assert(_o.count("currentNumber") > 0);
m_environment.previousBlock.hash = h256(_o["previousHash"].get_str()); m_environment.currentBlock.parentHash = h256(_o["previousHash"].get_str());
m_environment.currentBlock.number = toInt(_o["currentNumber"]); m_environment.currentBlock.number = toInt(_o["currentNumber"]);
m_environment.currentBlock.gasLimit = toInt(_o["currentGasLimit"]); m_environment.currentBlock.gasLimit = toInt(_o["currentGasLimit"]);
m_environment.currentBlock.difficulty = toInt(_o["currentDifficulty"]); m_environment.currentBlock.difficulty = toInt(_o["currentDifficulty"]);

View File

@ -101,7 +101,7 @@ namespace test
class ImportTest class ImportTest
{ {
public: public:
ImportTest(json_spirit::mObject& _o) : m_statePre(Address(), OverlayDB(), eth::BaseState::Empty), m_statePost(Address(), OverlayDB(), eth::BaseState::Empty), m_TestObject(_o) {} ImportTest(json_spirit::mObject& _o): m_TestObject(_o) {}
ImportTest(json_spirit::mObject& _o, bool isFiller); ImportTest(json_spirit::mObject& _o, bool isFiller);
// imports // imports
void importEnv(json_spirit::mObject& _o); void importEnv(json_spirit::mObject& _o);

View File

@ -52,7 +52,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
BOOST_REQUIRE(o.count("pre")); BOOST_REQUIRE(o.count("pre"));
ImportTest importer(o["pre"].get_obj()); ImportTest importer(o["pre"].get_obj());
State state(biGenesisBlock.coinbaseAddress, OverlayDB(), BaseState::Empty); State state(OverlayDB(), BaseState::Empty, biGenesisBlock.coinbaseAddress);
importer.importState(o["pre"].get_obj(), state); importer.importState(o["pre"].get_obj(), state);
o["pre"] = fillJsonWithState(state); o["pre"] = fillJsonWithState(state);
state.commit(); state.commit();
@ -98,7 +98,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
{ {
mObject tx = txObj.get_obj(); mObject tx = txObj.get_obj();
importer.importTransaction(tx); importer.importTransaction(tx);
if (!txs.attemptImport(importer.m_transaction.rlp())) if (txs.import(importer.m_transaction.rlp()) != ImportResult::Success)
cnote << "failed importing transaction\n"; cnote << "failed importing transaction\n";
} }
@ -599,7 +599,7 @@ void updatePoW(BlockInfo& _bi)
ret = pow.mine(_bi, 10000, true, true); ret = pow.mine(_bi, 10000, true, true);
Ethash::assignResult(ret.second, _bi); Ethash::assignResult(ret.second, _bi);
} }
_bi.hash = _bi.headerHash(WithNonce); _bi.noteDirty();
} }
void writeBlockHeaderToJson(mObject& _o, BlockInfo const& _bi) void writeBlockHeaderToJson(mObject& _o, BlockInfo const& _bi)
@ -619,7 +619,7 @@ void writeBlockHeaderToJson(mObject& _o, BlockInfo const& _bi)
_o["extraData"] ="0x" + toHex(_bi.extraData); _o["extraData"] ="0x" + toHex(_bi.extraData);
_o["mixHash"] = toString(_bi.mixHash); _o["mixHash"] = toString(_bi.mixHash);
_o["nonce"] = toString(_bi.nonce); _o["nonce"] = toString(_bi.nonce);
_o["hash"] = toString(_bi.hash); _o["hash"] = toString(_bi.hash());
} }
RLPStream createFullBlockFromHeader(BlockInfo const& _bi, bytes const& _txs, bytes const& _uncles) RLPStream createFullBlockFromHeader(BlockInfo const& _bi, bytes const& _txs, bytes const& _uncles)

View File

@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE(basic_test)
unsigned cacheSize(o["cache_size"].get_int()); unsigned cacheSize(o["cache_size"].get_int());
h256 cacheHash(o["cache_hash"].get_str()); h256 cacheHash(o["cache_hash"].get_str());
BOOST_REQUIRE_EQUAL(Ethasher::get()->params(header).cache_size, cacheSize); BOOST_REQUIRE_EQUAL(Ethasher::get()->params(header).cache_size, cacheSize);
BOOST_REQUIRE_EQUAL(sha3(bytesConstRef((byte const*)Ethasher::get()->cache(header), cacheSize)), cacheHash); BOOST_REQUIRE_EQUAL(sha3(bytesConstRef((byte const*)Ethasher::get()->light(header), cacheSize)), cacheHash);
#if TEST_FULL #if TEST_FULL
unsigned fullSize(o["full_size"].get_int()); unsigned fullSize(o["full_size"].get_int());

View File

@ -1,4 +1,3 @@
/* /*
This file is part of cpp-ethereum. This file is part of cpp-ethereum.

View File

@ -58,7 +58,7 @@ BOOST_AUTO_TEST_CASE(Complex)
CanonBlockChain bc; CanonBlockChain bc;
cout << bc; cout << bc;
State s(myMiner.address(), stateDB); State s(stateDB, BaseState::Empty, myMiner.address());
cout << s; cout << s;
// Sync up - this won't do much until we use the last state. // Sync up - this won't do much until we use the last state.

4
vm.cpp
View File

@ -96,7 +96,7 @@ void FakeExtVM::push(mArray& a, u256 _v)
mObject FakeExtVM::exportEnv() mObject FakeExtVM::exportEnv()
{ {
mObject ret; mObject ret;
ret["previousHash"] = toString(previousBlock.hash); ret["previousHash"] = toString(currentBlock.parentHash);
push(ret, "currentDifficulty", currentBlock.difficulty); push(ret, "currentDifficulty", currentBlock.difficulty);
push(ret, "currentTimestamp", currentBlock.timestamp); push(ret, "currentTimestamp", currentBlock.timestamp);
ret["currentCoinbase"] = toString(currentBlock.coinbaseAddress); ret["currentCoinbase"] = toString(currentBlock.coinbaseAddress);
@ -115,7 +115,7 @@ void FakeExtVM::importEnv(mObject& _o)
assert(_o.count("currentCoinbase") > 0); assert(_o.count("currentCoinbase") > 0);
assert(_o.count("currentNumber") > 0); assert(_o.count("currentNumber") > 0);
previousBlock.hash = h256(_o["previousHash"].get_str()); currentBlock.parentHash = h256(_o["previousHash"].get_str());
currentBlock.number = toInt(_o["currentNumber"]); currentBlock.number = toInt(_o["currentNumber"]);
lastHashes = test::lastHashes(currentBlock.number); lastHashes = test::lastHashes(currentBlock.number);
currentBlock.gasLimit = toInt(_o["currentGasLimit"]); currentBlock.gasLimit = toInt(_o["currentGasLimit"]);