diff options
author | Gav Wood <i@gavwood.com> | 2014-05-30 05:11:45 +0800 |
---|---|---|
committer | Gav Wood <i@gavwood.com> | 2014-05-30 05:11:45 +0800 |
commit | 3aa823b55e761e4b55c2c939d9aaf268d77b42e8 (patch) | |
tree | 5d94cb98f8c76bcab9b8ad501b4efcfed851a018 | |
parent | a620c7f6d3e7c5251e3e3628e0324485da3c0183 (diff) | |
download | dexon-solidity-3aa823b55e761e4b55c2c939d9aaf268d77b42e8.tar dexon-solidity-3aa823b55e761e4b55c2c939d9aaf268d77b42e8.tar.gz dexon-solidity-3aa823b55e761e4b55c2c939d9aaf268d77b42e8.tar.bz2 dexon-solidity-3aa823b55e761e4b55c2c939d9aaf268d77b42e8.tar.lz dexon-solidity-3aa823b55e761e4b55c2c939d9aaf268d77b42e8.tar.xz dexon-solidity-3aa823b55e761e4b55c2c939d9aaf268d77b42e8.tar.zst dexon-solidity-3aa823b55e761e4b55c2c939d9aaf268d77b42e8.zip |
Revert "Fix for unless/when."
This reverts commit b12d91e726ae5d1742e6d828c2cb5b694ffdf8a3.
-rw-r--r-- | main.cpp | 54 | ||||
-rw-r--r-- | trie.cpp | 75 |
2 files changed, 59 insertions, 70 deletions
@@ -45,12 +45,11 @@ BOOST_AUTO_TEST_CASE(basic_tests) cdebug << "Stress-testing Trie..."; { BasicMap m; - BasicMap dm; - EnforceRefs e(dm, true); - GenericTrieDB<BasicMap> d(&dm); + EnforceRefs e(m, true); + GenericTrieDB<BasicMap> d(&m); d.init(); // initialise as empty tree. MemTrie t; - BOOST_REQUIRE(d.check()); + assert(d.check().empty()); for (int a = 0; a < 100; ++a) { StringMap m; @@ -58,55 +57,22 @@ BOOST_AUTO_TEST_CASE(basic_tests) { auto k = randomWord(); auto v = toString(i); - cdebug << k << v; - m[k] = v; + m.insert(make_pair(k, v)); t.insert(k, v); d.insert(k, v); - BOOST_REQUIRE_EQUAL(hash256(m), t.hash256()); - BOOST_REQUIRE_EQUAL(hash256(m), d.root()); - BOOST_REQUIRE(d.check()); + assert(hash256(m) == t.hash256()); + assert(hash256(m) == d.root()); + assert(d.check().empty()); } while (!m.empty()) { auto k = m.begin()->first; - auto v = m.begin()->second; - cdebug << k << m.size(); d.remove(k); t.remove(k); m.erase(k); - if (!d.check()) - { - cwarn << m; - for (auto i: d) - cwarn << i.first.toString() << i.second.toString(); - - BasicMap dm2; - EnforceRefs e2(dm2, true); - GenericTrieDB<BasicMap> d2(&dm2); - d2.init(); // initialise as empty tree. - for (auto i: d) - d2.insert(i.first, i.second); - - cwarn << "Good:" << d2.root(); - for (auto i: dm2.get()) - cwarn << i.first.abridged() << ": " << RLP(i.second); - cwarn << "Broken:" << d.root(); // Leaves an extension -> extension (3c1... -> 742...) - for (auto i: dm.get()) - cwarn << i.first.abridged() << ": " << RLP(i.second); - - d2.insert(k, v); - cwarn << "Pres:" << d2.root(); - for (auto i: dm2.get()) - cwarn << i.first.abridged() << ": " << RLP(i.second); - g_logVerbosity = 99; - d2.remove(k); - g_logVerbosity = 4; - - cwarn << "Good?" << d2.root(); - } - BOOST_REQUIRE(d.check()); - BOOST_REQUIRE_EQUAL(hash256(m), t.hash256()); - BOOST_REQUIRE_EQUAL(hash256(m), d.root()); + assert(hash256(m) == t.hash256()); + assert(hash256(m) == d.root()); + assert(d.check().empty()); } } } @@ -49,6 +49,7 @@ namespace eth BOOST_AUTO_TEST_CASE(trie_tests) { cnote << "Testing Trie..."; + js::mValue v; string s = asString(contents("../../../tests/trietest.json")); BOOST_REQUIRE_MESSAGE( s.length() > 0, "Contents of 'trietest.json' is empty. Have you cloned the 'tests' repo branch develop?"); @@ -56,7 +57,7 @@ BOOST_AUTO_TEST_CASE(trie_tests) for (auto& i: v.get_obj()) { js::mObject& o = i.second.get_obj(); -// cnote << i.first; + cnote << i.first; vector<pair<string, string>> ss; for (auto& i: o["in"].get_obj()) ss.push_back(make_pair(i.first, i.second.get_str())); @@ -66,14 +67,9 @@ BOOST_AUTO_TEST_CASE(trie_tests) BasicMap m; GenericTrieDB<BasicMap> t(&m); t.init(); - BOOST_REQUIRE(t.check()); for (auto const& k: ss) - { -// cdebug << k.first << k.second; t.insert(k.first, k.second); - BOOST_REQUIRE(t.check()); - } - BOOST_REQUIRE(!o["root"].is_null()); + BOOST_REQUIRE(!o["root"].is_null()); BOOST_CHECK(o["root"].get_str() == toHex(t.root().asArray()) ); } } @@ -85,9 +81,8 @@ inline h256 stringMapHash256(StringMap const& _s) return hash256(_s); } -BOOST_AUTO_TEST_CASE(moreTrieTests) +int trieTest() { - cnote << "Testing Trie more..."; #if 0 // More tests... { @@ -158,7 +153,6 @@ BOOST_AUTO_TEST_CASE(moreTrieTests) cout << RLP(t.rlp()) << endl; cout << toHex(t.rlp()) << endl; } -#endif { BasicMap m; GenericTrieDB<BasicMap> d(&m); @@ -172,21 +166,20 @@ BOOST_AUTO_TEST_CASE(moreTrieTests) t.insert(a, b); s[a] = b; - /*cout << endl << "-------------------------------" << endl; + cout << endl << "-------------------------------" << endl; cout << a << " -> " << b << endl; cout << d; cout << m; cout << d.root() << endl; - cout << hash256(s) << endl;*/ + cout << hash256(s) << endl; - BOOST_REQUIRE(d.check()); - BOOST_REQUIRE_EQUAL(t.hash256(), hash256(s)); - BOOST_REQUIRE_EQUAL(d.root(), hash256(s)); + assert(t.hash256() == hash256(s)); + assert(d.root() == hash256(s)); for (auto const& i: s) { (void)i; - BOOST_REQUIRE_EQUAL(t.at(i.first), i.second); - BOOST_REQUIRE_EQUAL(d.at(i.first), i.second); + assert(t.at(i.first) == i.second); + assert(d.at(i.first) == i.second); } }; @@ -196,23 +189,22 @@ BOOST_AUTO_TEST_CASE(moreTrieTests) t.remove(a); d.remove(string(a)); - /*cout << endl << "-------------------------------" << endl; + cout << endl << "-------------------------------" << endl; cout << "X " << a << endl; cout << d; cout << m; cout << d.root() << endl; - cout << hash256(s) << endl;*/ + cout << hash256(s) << endl; - BOOST_REQUIRE(d.check()); - BOOST_REQUIRE(t.at(a).empty()); - BOOST_REQUIRE(d.at(string(a)).empty()); - BOOST_REQUIRE_EQUAL(t.hash256(), hash256(s)); - BOOST_REQUIRE_EQUAL(d.root(), hash256(s)); + assert(t.at(a).empty()); + assert(d.at(string(a)).empty()); + assert(t.hash256() == hash256(s)); + assert(d.root() == hash256(s)); for (auto const& i: s) { (void)i; - BOOST_REQUIRE_EQUAL(t.at(i.first), i.second); - BOOST_REQUIRE_EQUAL(d.at(i.first), i.second); + assert(t.at(i.first) == i.second); + assert(d.at(i.first) == i.second); } }; @@ -227,5 +219,36 @@ BOOST_AUTO_TEST_CASE(moreTrieTests) remove("doge"); remove("doe"); } +#endif + { + BasicMap m; + GenericTrieDB<BasicMap> d(&m); + d.init(); // initialise as empty tree. + MemTrie t; + for (int a = 0; a < 20; ++a) + { + StringMap m; + for (int i = 0; i < 20; ++i) + { + auto k = randomWord(); + auto v = toString(i); + m.insert(make_pair(k, v)); + t.insert(k, v); + d.insert(k, v); + assert(hash256(m) == t.hash256()); + assert(hash256(m) == d.root()); + } + while (!m.empty()) + { + auto k = m.begin()->first; + d.remove(k); + t.remove(k); + m.erase(k); + assert(hash256(m) == t.hash256()); + assert(hash256(m) == d.root()); + } + } + } + return 0; } |