aboutsummaryrefslogtreecommitdiffstats
path: root/trie.cpp
diff options
context:
space:
mode:
authorGav Wood <i@gavwood.com>2014-05-30 05:11:45 +0800
committerGav Wood <i@gavwood.com>2014-05-30 05:11:45 +0800
commit3aa823b55e761e4b55c2c939d9aaf268d77b42e8 (patch)
tree5d94cb98f8c76bcab9b8ad501b4efcfed851a018 /trie.cpp
parenta620c7f6d3e7c5251e3e3628e0324485da3c0183 (diff)
downloaddexon-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.
Diffstat (limited to 'trie.cpp')
-rw-r--r--trie.cpp75
1 files changed, 49 insertions, 26 deletions
diff --git a/trie.cpp b/trie.cpp
index 4ac43201..f3ff3ef4 100644
--- a/trie.cpp
+++ b/trie.cpp
@@ -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;
}