diff options
author | Gav Wood <i@gavwood.com> | 2015-03-02 05:54:05 +0800 |
---|---|---|
committer | Gav Wood <i@gavwood.com> | 2015-03-02 05:54:05 +0800 |
commit | 134ba7f8801e71098c848c7c742674b5a01339a1 (patch) | |
tree | 1cc806f14766182861bf7c438ee3d401ba9c273a | |
parent | aa33958d88df113c2f3d8ffdb0311d15a70539b6 (diff) | |
download | dexon-solidity-134ba7f8801e71098c848c7c742674b5a01339a1.tar.gz dexon-solidity-134ba7f8801e71098c848c7c742674b5a01339a1.tar.zst dexon-solidity-134ba7f8801e71098c848c7c742674b5a01339a1.zip |
State integration test.
Fixes to the FatTrie.
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | stateOriginal.cpp | 36 | ||||
-rw-r--r-- | trie.cpp | 20 |
3 files changed, 48 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ddfdb40..292f62a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ target_link_libraries(testeth ethereum) target_link_libraries(testeth ethcore) target_link_libraries(testeth secp256k1) target_link_libraries(testeth solidity) -if (NOT HEADLESS) +if (NOT HEADLESS AND NOT JUSTTESTS) target_link_libraries(testeth webthree) target_link_libraries(testeth natspec) endif() diff --git a/stateOriginal.cpp b/stateOriginal.cpp index 65ff5084..5b7b0415 100644 --- a/stateOriginal.cpp +++ b/stateOriginal.cpp @@ -20,6 +20,7 @@ * State test functions. */ +#include <boost/test/unit_test.hpp> #include <boost/filesystem/operations.hpp> #include <secp256k1/secp256k1.h> #include <libethereum/CanonBlockChain.h> @@ -29,7 +30,21 @@ using namespace std; using namespace dev; using namespace dev::eth; -int stateTest() +namespace dev +{ +namespace test +{ + +int stateTest(); + +BOOST_AUTO_TEST_SUITE(StateIntegration) + +BOOST_AUTO_TEST_CASE(Basic) +{ + State s; +} + +BOOST_AUTO_TEST_CASE(Complex) { cnote << "Testing State..."; @@ -37,14 +52,15 @@ int stateTest() KeyPair myMiner = sha3("Gav's Miner"); // KeyPair you = sha3("123"); - Defaults::setDBPath(boost::filesystem::temp_directory_path().string()); + Defaults::setDBPath(boost::filesystem::temp_directory_path().string() + "/" + toString(chrono::system_clock::now().time_since_epoch().count())); OverlayDB stateDB = State::openDB(); CanonBlockChain bc; - State s(myMiner.address(), stateDB); - cout << bc; + State s(myMiner.address(), stateDB); + cout << s; + // Sync up - this won't do much until we use the last state. s.sync(bc); @@ -52,7 +68,7 @@ int stateTest() // Mine to get some ether! s.commitToMine(bc); - while (!s.mine(100).completed) {} + while (!s.mine(100, true).completed) {} s.completeMine(); bc.attemptImport(s.blockData(), stateDB); @@ -65,7 +81,7 @@ int stateTest() // Inject a transaction to transfer funds from miner to me. bytes tx; { - Transaction t(1000, 0, 0, me.address(), bytes(), s.transactionsFrom(myMiner.address()), myMiner.secret()); + Transaction t(1000, 10000, 10000, me.address(), bytes(), s.transactionsFrom(myMiner.address()), myMiner.secret()); assert(t.sender() == myMiner.address()); tx = t.rlp(); } @@ -76,7 +92,7 @@ int stateTest() // Mine to get some ether and set in stone. s.commitToMine(bc); s.commitToMine(bc); - while (!s.mine(50).completed) { s.commitToMine(bc); } + while (!s.mine(100, true).completed) {} s.completeMine(); bc.attemptImport(s.blockData(), stateDB); @@ -85,7 +101,9 @@ int stateTest() s.sync(bc); cout << s; - - return 0; } +BOOST_AUTO_TEST_SUITE_END() + +} +} @@ -52,6 +52,26 @@ using dev::operator <<; BOOST_AUTO_TEST_SUITE(TrieTests) +BOOST_AUTO_TEST_CASE(fat_trie) +{ + h256 r; + MemoryDB fm; + { + FatGenericTrieDB<MemoryDB> ft(&fm); + ft.init(); + ft.insert(h256("69", h256::FromHex, h256::AlignRight).ref(), h256("414243", h256::FromHex, h256::AlignRight).ref()); + for (auto i: ft) + cnote << i.first << i.second; + r = ft.root(); + } + { + FatGenericTrieDB<MemoryDB> ft(&fm); + ft.setRoot(r); + for (auto i: ft) + cnote << i.first << i.second; + } +} + BOOST_AUTO_TEST_CASE(trie_test_anyorder) { string testPath = test::getTestPath(); |